只输出特定节点的PHP XML


output only a specific node PHP XML

我试图保存一个特定的节点,而不是完整的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();查询工作,但正如我所说,它保存整个节点结构。

XML文件:

<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));