我试图保存特定节点而不是完整的xml文件,但是我收到了错误。
可捕获的致命错误:传递给DOMDocument :: saveXML()的参数1必须是DOMNode的一个实例,第31行的php \ corrdination.php中给出的DOMNodeList实例
我正在关注厄运文档,但由于我没有创建新元素,只读取已创建的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();
查询有效,但正如我所说,它保存了整个节点结构。
XML文件:
<stickers>
<sticker>
<position>
<x>0</x>
</position>
<text>Hello world </text>
<id>200</id>
</sticker>
</stickers>
由于
答案 0 :(得分:2)
错误说您必须将DOMNode
传递给DOMDocument::saveXML()
。所以你需要改变这一行:
echo $xml->saveXML($resultX);
到此:
echo $xml->saveXML($resultX->item(0));