SimpleXML を使用して XPath ノードを削除する方法
SimpleXML では、XPath クエリを使用して XML ノードを検索して削除するのが難しい場合があります。この記事では、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 中国語 Web サイトの他の関連記事を参照してください。