我试图保存一个特定的节点,而不是完整的xml文件,但我得到错误。
可捕获的致命错误:参数1传递给DOMDocument::saveXML()必须是一个DOMNode的实例,DOMNodeList的实例在php' coordination .php第31行
我遵循doom文档,但因为我不创建新元素,只从已经创建的xml文件中读取,它不能与创建新元素工作
第31行是
$resultX = $xpath->query('/stickers/sticker[id="200"]/position/x');
当我试图只保存更改的节点时,我写。
echo $xml->saveXML($resultX);
有什么建议吗?这是我的整个php文件
$xml = new DOMDocument();
$xml->formatOutput = TRUE;
$xml->preserveWhiteSpace = FALSE;
$xml->load('../stickers.xml');
$xpath = new DOMXPath($xml);
$resultX = $xpath->query('/stickers/sticker[id="200"]/position/x');
$resultX->item(0)->nodeValue = "150";
echo $xml->saveXML($resultX);
如果我只有echo $xml->saveXML();
查询工作,但正如我所说,它保存整个节点结构。
<stickers>
<sticker>
<position>
<x>0</x>
</position>
<text>Hello world </text>
<id>200</id>
</sticker>
</stickers>
谢谢
错误提示您必须将DOMNode
传递给DOMDocument::saveXML()
。所以你需要改变这一行:
echo $xml->saveXML($resultX);
:
echo $xml->saveXML($resultX->item(0));