SimpleXML: XPath ノードの削除
この記事では、次のコマンドを使用して XML ドキュメントから親ノードを効果的に削除する方法を検討します。 SimpleXML と XPath。
SimpleXML の制限について
提供されたコードは、XPath 経由で親ノードを見つけた後、SimpleXML を使用して親ノードを削除しようとします。ただし、SimpleXML の unset() 関数は、変数に格納されているオブジェクト参照のみを削除し、ノード自体は削除しません。
DOMDocument to the Rescue
SimpleXML の制限を克服するには、次のことを考慮してください。 XML ドキュメントの構造をより直接的に操作する DOMDocument を使用します。
DOMDocument を使用した解決策
コード例と出力
<code class="php">$doc = new DOMDocument; $doc->loadXML(...); $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>
このコードは
結論
DOMDocument を使用すると、直接削除など、XML ドキュメントのより堅牢な操作が可能になります。ノードの数。 SimpleXML は基本的な XPath クエリには便利ですが、より複雑な XML 操作タスクには DOMDocument の方が適しています。
以上がSimpleXML と DOMDocument を使用して XPath ノードを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。