仅输出特定节点 PHP XML
Posted
技术标签:
【中文标题】仅输出特定节点 PHP XML【英文标题】:output only a specific node PHP XML 【发布时间】:2013-03-23 12:06:31 【问题描述】:我试图保存一个特定的节点而不是完整的 xml 文件,但我得到了错误。
可捕获的致命错误:传递给 DOMDocument::saveXML() 的参数 1 必须是 DOMNode 的实例,在第 31 行的 php\corrdination.php 中给出的 DOMNodeList 的实例
我正在关注 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();
该查询有效,但正如我所说,它保存了整个节点结构。
XML 文件:
<stickers>
<sticker>
<position>
<x>0</x>
</position>
<text>Hello world </text>
<id>200</id>
</sticker>
</stickers>
谢谢
【问题讨论】:
错误提示您必须将DOMNode
传递给DOMDocument::saveXML()
。所以也许您需要将saveXML($resultX)
更改为saveXML($resultX->item(0))
?
做到了,你应该把它写成答案,这样我就可以接受了:) 谢谢我的朋友
【参考方案1】:
错误提示您必须将DOMNode
传递给DOMDocument::saveXML()
。所以你需要改变这一行:
echo $xml->saveXML($resultX);
到这里:
echo $xml->saveXML($resultX->item(0));
【讨论】:
以上是关于仅输出特定节点 PHP XML的主要内容,如果未能解决你的问题,请参考以下文章