仅输出特定节点PHP XML

时间:2013-03-23 12:06:32

标签: php xml

我试图保存特定节点而不是完整的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>

由于

1 个答案:

答案 0 :(得分:2)

错误说您必须将DOMNode传递给DOMDocument::saveXML()。所以你需要改变这一行:

echo $xml->saveXML($resultX);

到此:

echo $xml->saveXML($resultX->item(0));