使用php dom更新特定的xml节点

时间:2016-04-12 06:18:20

标签: php xml dom xpath

我正在尝试制作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循环中,但却无法找到它。

0 个答案:

没有答案