PHP word xml解析

PHP word xml解析,php,xml-parsing,Php,Xml Parsing,我正在尝试从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

我正在尝试从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> .....
目录“1-9”\t“第一章导言和核心规定”第1、2、2、3、4、5、2、3、6节。。。。。
如何获取标题、小节、部分等内容。我尝试了以下代码

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


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

    }
$xml=newDOMDocument();
$xml->load('ITA97Vol01_1-36_WD02_2.xml');
foreach($xml->getElementsByTagName('sect')作为$child){
echo“;print_R($child);
回声“;
}

是否存在获取所需数据的模式。请帮助我解决此问题。

Tomer W建议将您的
getElementsByTagName
替换为
GetElementsByTagnames
函数。我无法从xml代码片段中分辨出Word版本,但您需要wx:sect标记的名称空间。因此,在xml的上面某个地方应该有
xmlns:wx=”http://schemas....“
-因此只需复制基于NS的标记名函数的url即可:

$xml=newDOMDocument();
$xml->load('ITA97Vol01_1-36_WD02_2.xml');
foreach($xml->getelementsbytagnames($xml)http://schemas....“,”sect”)作为$child){
echo“;print_R($child);
回声“;
}
而对于标题,我假设您指的是您在每个部分的第一行中使用的标题。标题也只存储在普通的
标记中,因此您可以选择新节后面第一个出现的t元素,或者您必须首先找到标题样式,然后在那里选择文本


但是,要想获得完整的解决方案,您必须在整个文件中进行挖掘,因为文件中存在大量垃圾,因此您只能通过已知的元素/标记进行定位。

sect位于名称空间中,别名为wx,请尝试使用其namespace@TomerW你能解释一下siruse@TomerW Thaks的代码吗。我来看看this@TomerW我认为该链接是指xml字符串。如果我把它用作文件,它只返回空的。你能帮助我吗
$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>";  

}