PHP DOM问题在XML中搜索<w:t>标签</w:t>

时间:2010-07-16 12:30:03

标签: php xml dom

所以我有一个XML文件(MS Word文件的XML导出)。我要做的就是替换这两行:

<w:t>Meno:</w:t>

<w:t>Priezvisko:</w:t>

这是一段较长的XML摘录:

<w:p w:rsidR="00CF175F" w:rsidRDefault="00CF175F">
−
<w:r>
<w:t>Meno:</w:t>
</w:r>
</w:p>
−
<w:p w:rsidR="00CF175F" w:rsidRDefault="00CF175F">
−
<w:r>
<w:t>Priezvisko:</w:t>
</w:r>
</w:p>

我这样做:

$xml = file_get_contents('file.xml');

$doc = new DOMDocument();
$doc->loadXML($xml);
$doc->preserveWhiteSpace = false;

$wts = $doc->getElementsByTagNameNS('http://schemas.openxmlformats.org/wordprocessingml/2006/main','t');

foreach ($wts as $wt) {

 echo 1;

 //if ('Meno:' === substr($wt->nodevalue, 0, 5)) {
  //echo 1;
 //}

}

那个剧本没有回音。为什么getElementsByTagName不起作用? XML中有数十个w:t标记。

1 个答案:

答案 0 :(得分:1)

我不知道php,但几乎可以肯定问题是xml DOM认为“w”指的是你尚未定义的命名空间。您需要在“w”引用的命名空间中搜索名为“t”的标记,而不是搜索名为“w:t”的“标记”。

有关xml命名空间的更好解释以及如何声明它们(在文档中使用“xmlns”,请参阅here