douduan3203 2013-03-23 12:06
浏览 37
已采纳

仅输出特定节点PHP XML

Im trying to save a specific node instead of the full xml file, but I get error.

Catchable fatal error: Argument 1 passed to DOMDocument::saveXML() must be an instance of DOMNode, instance of DOMNodeList given in php\corrdination.php on line 31

I'm following the doom documentation but since I don't create new element and only read from an already created xml file, it wont work with creating new elements.

My line 31 is

$resultX = $xpath->query('/stickers/sticker[id="200"]/position/x'); 

And when im trying to save only the changed node i write.

echo $xml->saveXML($resultX);

Any suggestion on how to do it ? This is my whole php file.

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

If I only echo $xml->saveXML(); The query works but as I said, it saves the whole node structure.

XML file:

<stickers>
  <sticker>
    <position>
      <x>0</x>
    </position>
    <text>Hello world </text>
    <id>200</id>
  </sticker>
 </stickers>

Thanks

  • 写回答

1条回答 默认 最新

  • dongmian8108 2013-03-23 12:22
    关注

    The error says you have to pass DOMNode to DOMDocument::saveXML(). So you need to change this line:

    echo $xml->saveXML($resultX);
    

    to this:

    echo $xml->saveXML($resultX->item(0));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)