我正在尝试制作php代码,只通过xpath从xml更新所需的节点。
以下是php代码的示例:
// get variables
$toimipaikka = $_GET["toimipaikka"];
$ohje = $_GET["ohje"];
$uusohje = $_GET["uusohje"];
//load file
$ohjeet = new DomDocument;
$ohjeet->load('genesis.xml');
$xpolku = new DomXpath($ohjeet);
// find specific nodes and update
foreach ($xpolku->query('//ohjeet/ohje[@toimipaikka="' . $toimipaikka . '"]/osa[@ohj="' . $ohje . '"]') as $node) {
$node->parentNode->replaceChild($node, $uusohje);
}
// save xml file
file_put_contents('genesis.xml',$ohjeet->saveXML());
以下是xml文件的示例:
<ohjeet>
<ohje toimipaikka="kaikki">
<osa ohj="ohj_1101"><![CDATA[
<a href="apple">link link link<a>
]]></osa>
</ohje>
<ohje toimipaikka="labra">
<osa ohj="ohj_110"><![CDATA[
<li>text text text</li>
]]></osa>
<osa ohj="ohj_110"><![CDATA[
<li>text text text</li>
]]></osa>
</ohje>
</ohjeet>
它会打开文件并保存,但不会进行任何更改。有什么建议吗?我很确定问题出在foreach循环中,但却无法找到它。