所以我有一个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标记。
答案 0 :(得分:1)
我不知道php,但几乎可以肯定问题是xml DOM认为“w”指的是你尚未定义的命名空间。您需要在“w”引用的命名空间中搜索名为“t”的标记,而不是搜索名为“w:t”的“标记”。
有关xml命名空间的更好解释以及如何声明它们(在文档中使用“xmlns”,请参阅here。