如何使用 SimpleXML 删除 XPath 节点
使用 XPath 查询查找和删除 XML 节点在 SimpleXML 中可能是一个挑战。本文解决了删除通过 XPath 搜索识别的父节点的问题。
考虑以下示例:
<code class="php">$xml = simplexml_load_file($filename); $data = $xml->xpath('//items/info[item_id="' . $item_id . '"]'); $parent = $data[0]->xpath("parent::*"); unset($parent);</code>
在此代码中,目标是删除父
解决方案是恢复使用 DOMDocument 来完成此任务:
<code class="php">$doc = new DOMDocument; $doc->loadxml('<foo> <items> <info> <item_id>123</item_id> </info> </items> <items> <info> <item_id>456</item_id> </info> </items> <items> <info> <item_id>789</item_id> </info> </items> </foo>'); $item_id = 456; $xpath = new DOMXpath($doc); foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) { $node->parentNode->removeChild($node); } echo $doc->savexml();</code>
此代码将删除
以上是如何删除 SimpleXML 中的 XPath 节点而不丢失整个结构?的详细内容。更多信息请关注PHP中文网其他相关文章!