ホームページ  >  記事  >  バックエンド開発  >  SimpleXML と DOMDocument を使用して XPath ノードを削除するにはどうすればよいですか?

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 21:25:29438ブラウズ

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) を使用して親ノードを削除します。

コード例と出力

<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>

このコードは を削除します。 item_id 456 の製品のノードを追加すると、そのノードなしで XML ドキュメントが変更されます。

結論

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

以上がSimpleXML と DOMDocument を使用して XPath ノードを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。