如何使用 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中文網其他相關文章!