「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SimpleXML と DOMDocument を使用して XPath ノードを削除するにはどうすればよいですか?

SimpleXML と DOMDocument を使用して XPath ノードを削除するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:606

How Can I Delete an XPath Node Using SimpleXML and DOMDocument?

SimpleXML: XPath ノードの削除

この記事では、次のコマンドを使用して XML ドキュメントから親ノードを効果的に削除する方法を検討します。 SimpleXML と XPath.

SimpleXML の理解制限事項

提供されたコードは、XPath 経由で親ノードを見つけた後、SimpleXML を使用して親ノードを削除しようとします。ただし、SimpleXML の unset() 関数は、変数に格納されているオブジェクト参照のみを削除し、ノード自体は削除しません。

DOMDocument to the Rescue

SimpleXML の制限を克服するには、次のことを考慮してください。 XML ドキュメントの構造をより直接的に操作する DOMDocument を使用します。

ソリューションを使用します。 DOMDocument

  1. DOMDocument オブジェクトを作成し、そこに XML ファイルをロードします。
  2. XPath を使用してターゲット ノードをクエリし、選択します。
  3. 親を削除します使用するノード$node->parentNode->removeChild($node).

コード例と出力

$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 の製品の ノードを削除し、その結果、そのノードのない変更された XML ドキュメントが生成されます。

結論

DOMDocument を使用すると、ノードの直接削除など、XML ドキュメントのより堅牢な操作が可能になります。 SimpleXML は基本的な XPath クエリには便利ですが、より複雑な XML 操作タスクには DOMDocument の方が適しています。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3