0

我试图保存特定节点而不是完整的 xml 文件,但出现错误。

可捕获的致命错误:传递给 DOMDocument::saveXML() 的参数 1 必须是 DOMNode 的实例,DOMNodeList 的实例在第 31 行的 php\corrdination.php 中给出

我正在关注厄运文档,但由于我不创建新元素并且只从已创建的 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>

谢谢

4

1 回答 1

2

错误说你必须传递DOMNodeDOMDocument::saveXML(). 所以你需要改变这一行:

echo $xml->saveXML($resultX);

对此:

echo $xml->saveXML($resultX->item(0));
于 2013-03-23T12:22:33.247 回答