【问题标题】:PHP word xml parsingPHP word xml解析
【发布时间】:2015-03-25 05:10:20
【问题描述】:

我正在尝试从 Microsoft Word 文件创建 xml 文件。我将word文件保存为XML。但无法解析它或从它获取内容。如下图所示

<wx:sect><w:p wsp:rsidR="00537F3C" wsp:rsidRPr="00616B5B" wsp:rsidRDefault="005F2CBA" wsp:rsidP="005F2CBA"><w:pPr><w:pStyle w:val="Contents"/></w:pPr><w:r wsp:rsidRPr="00616B5B"><w:t>Contents</w:t></w:r></w:p><w:p wsp:rsidR="001E54C8" wsp:rsidRDefault="001E54C8"><w:pPr><w:pStyle w:val="TOC2"/><w:rPr><w:rFonts w:ascii="Calibri" w:h-ansi="Calibri"/><wx:font wx:val="Calibri"/><w:b w:val="off"/><w:i-cs w:val="off"/><w:noProof/><w:kern w:val="0"/><w:sz w:val="22"/><w:sz-cs w:val="22"/></w:rPr></w:pPr><w:r><w:fldChar w:fldCharType="begin"/></w:r><w:r><w:instrText> TOC \o "1-9" \t "ActHead 1,2,ActHead 2,2,ActHead 3,3,ActHead 4,4,ActHead 5,5, Schedule,2, Schedule Text,3, NotesSection,6" </w:instrText></w:r><w:r><w:fldChar w:fldCharType="separate"/></w:r><w:r><w:rPr><w:noProof/></w:rPr><w:t>Chapter 1—Introduction and core provisions</w:t></w:r> .....

如何获取标题、小节、部分等内容。我尝试了以下代码

$xml = new DOMDocument();
    $xml->load('ITA97Vol01_1-36_WD02_2.xml');


    foreach($xml->getElementsByTagName('sect') as $child) {
        echo "<pre>";print_R($child);
        echo "</pre>";  

    }

是否有任何模式来获取所需的数据。帮我解决这个问题。

【问题讨论】:

  • sect 在命名空间中,别名为 wx,尝试使用其命名空间读取元素
  • @TomerW 你能解释一下或任何示例代码先生
  • @TomerW Thaks。我会看看这个
  • @TomerW 我认为该链接指的是 xml 字符串。如果我将其用于文件,则仅返回空。你能帮我吗

标签: php xml-parsing


【解决方案1】:

Tomer W 的建议是将您的 getElementsByTagName 替换为 getElementsByTagNameNS 函数。我无法从您的 xml sn-p 中分辨出 Word 版本,但您需要 wx:sect 标签的命名空间。所以在你的xml上面的某个地方你应该有xmlns:wx="http://schemas...." - 所以只需复制基于NS的TagName函数的url:

$xml = new DOMDocument();
$xml->load('ITA97Vol01_1-36_WD02_2.xml');


foreach($xml->getElementsByTagNameNS('http://schemas....','sect') as $child) {
    echo "<pre>";print_R($child);
    echo "</pre>";  

}

而对于标题,我假设您指的是您在每个部分的第一行中使用的标题。标题也只是存储在普通的&lt;w:t&gt;...&lt;/w:t&gt; 标记中,因此您要么选择新部分后第一次出现的 t 元素,要么必须先找到标题样式,然后在那里选择文本。

但要获得完整的解决方案,您将不得不挖掘完整的文件,那里有很多垃圾,所以您应该只通过已知元素/标签来定位。

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多