我正在尝试学习如何使用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
答案 0 :(得分:0)
您没有将结果保存回文件。 saveXML()
是一个命名错误的方法,它将结果返回为xml,它不会将其保存回文件。
将最后一行更改为
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());
?>
错误在于我没有注册命名空间!