SimpleXML: XPath ノードの削除
この記事では、次のコマンドを使用して XML ドキュメントから親ノードを効果的に削除する方法を検討します。 SimpleXML と XPath.
SimpleXML の理解制限事項
提供されたコードは、XPath 経由で親ノードを見つけた後、SimpleXML を使用して親ノードを削除しようとします。ただし、SimpleXML の unset() 関数は、変数に格納されているオブジェクト参照のみを削除し、ノード自体は削除しません。
DOMDocument to the Rescue
SimpleXML の制限を克服するには、次のことを考慮してください。 XML ドキュメントの構造をより直接的に操作する DOMDocument を使用します。
ソリューションを使用します。 DOMDocument
コード例と出力
$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();
このコードは item_id 456 の製品の
結論
DOMDocument を使用すると、ノードの直接削除など、XML ドキュメントのより堅牢な操作が可能になります。 SimpleXML は基本的な XPath クエリには便利ですが、より複雑な XML 操作タスクには DOMDocument の方が適しています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3