使用Php XML DOM更改XML文件中的原子值

时间:2013-03-26 13:43:29

标签: php xml

我正在尝试学习如何使用Php XML DOM来访问XML文件和 改变原子价值。我之前没有做过类似的事情,尽管我在网上发现了很多类似的案例,但我还没有找到解决办法。 这就是我所拥有的:

  <?php
   $dom = new DOMDocument;
   $dom->load('getobs.xml');

   $xpath = new DOMXPath($dom);
   $nodeList = $xpath->query("//beginPosition");
   $nodeList->item(0)->nodeValue .= '546';

   $dom->saveXML();
   ?>

所以,我在上面的代码中尝试做的是:  1)加载一个xml文件。  2)将元素“beginPosition”的值更改为“546”

在整个XML文件中,只有一个具有此名称的元素(beginPosition)。 你能告诉我我做错了吗?

感谢。 Dimtris

2 个答案:

答案 0 :(得分:0)

您没有将结果保存回文件。 saveXML()是一个命名错误的方法,它将结果返回为xml,它不会将其保存回文件。

saveXML

将最后一行更改为

 file_put_contents('getobs.xml',$dom->saveXML());

答案 1 :(得分:0)

最后,我设法使用以下代码:

    <?php
    // create new DOM document and load the data
    $dom = new DOMDocument;
    $dom->load('getobs.xml');
    //var_dump($dom);
    // Create new xpath and register the namespace
    $xpath = new DOMXPath($dom);
    $xpath->registerNamespace('g','http://www.opengis.net/gml');
    // query the result amd change the value to the new date
    $result = $xpath->query("//g:beginPosition");
    $result->item(0)->nodeValue = 'sds';
    // save the values in a new xml
    file_put_contents('test.xml',$dom->saveXML());
    ?>

错误在于我没有注册命名空间!