我正在尝试将 xml 文件中的 XML 数据解析为 PHP。我读到的SO中没有一个没有解决我的问题不幸的是,文件的所有结构都有命名空间,我无法进入它们进行解析。我发现并阅读了许多关于获取命名空间数据的文章,但它并没有清除任何内容。
我的XML文件看起来像这样:
[...]
<w:body>
<w:p wsp:rsidR="00FC2E4E" wsp:rsidRPr="00FC2E4E" wsp:rsidRDefault="00ED100D" wsp:rsidP="00FC2E4E">
<w:pPr>
<w:spacing w:line="240" w:line-rule="auto"/>
<w:ind w:left="-1134"/>
<w:jc w:val="both"/>
<w:rPr>
<w:noProof/>
<w:sz w:val="26"/>
<w:sz-cs w:val="26"/>
<w:lang w:val="PL"/>
</w:rPr>
</w:pPr>
<w:r wsp:rsidR="00FC2E4E" wsp:rsidRPr="00FC2E4E">
<w:rPr>
<w:noProof/>
<w:sz w:val="26"/>
<w:sz-cs w:val="26"/>
<w:lang w:val="PL"/>
</w:rPr>
<w:t>
THIS IS MY SEARCH STRING
</w:t>
</w:r>
</w:p>
</w:body>
我也有我的php文件:
if (file_exists('file.xml')) {
$xml = simplexml_load_file('file.xml');
foreach($xml->children() as $child) {
echo '|' . $child->getName(); <--- this returns nothing!
}
[...do some modification...]
$xml->saveXML('/stworz/dupa.xml');
} else {
exit('Failed to open file.xml.');
}
我想将xml(这是我的搜索字符串)的内容更改为另一个值,或者删除它并放置全新的值?如何进入隐藏在命名空间标记中的文本?请注意,即使是根标记也是命名空间的!
提前帮助。
此代码有效,但它会引发大量警告。你可以改用PHPWord。
<?php
if(file_exists('test.xml')) {
$xml = new DOMDocument();
$xml->load('test.xml');
foreach($xml->getElementsByTagName('t') as $child) {
echo '|' . $child->nodeValue;
}
echo $xml->saveXML();
} else {
exit('Failed to open file.xml.');
}
?>