ホームページ >バックエンド開発 >PHPチュートリアル >PHP の SimpleXML で特定の属性を持つ子要素を効果的に削除するにはどうすればよいですか?

PHP の SimpleXML で特定の属性を持つ子要素を効果的に削除するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 15:28:10702ブラウズ

How to Effectively Remove a Child Element with a Specific Attribute in PHP's SimpleXML?

SimpleXML for PHP での特定の属性を持つ子の削除

SimpleXML では、XML ドキュメントへのアクセスと変更が便利です。ただし、特定の子要素を削除する場合、特定の制限が発生する可能性があります。

次の XML 構造を考慮してください。

<data>
    <seg>

ID が「A12」の seg 要素を削除するには、次のコマンドを使用します。 SimpleXML の場合は、次のコードを試してみてください:

foreach($doc->seg as $seg)
{
    if($seg['id'] == 'A12')
    {
        unset($seg);
    }
}

残念ながら、このアプローチでは目的の要素は削除されません。 SimpleXML の変更の深さは浅い。これを完全に削除するには、次の解決策の利用を検討してください。

DOM 拡張機能の使用

DOM 拡張機能は、XML ドキュメントを変更するための代替方法を提供します。 dom_import_simplexml() を使用して SimpleXMLElement を DOMElement に変換すると、より強力な操作機能にアクセスできます。

$data = '<data>
    <seg>

このコードはターゲット seg 要素を正常に削除し、次の XML が生成されます。

<?xml version="1.0"?>
<data><seg>

ターゲット選択用の XPath

さらに、XPath を使用してSimpleXML は、特定のノードを選択するための簡潔な方法を提供します:

$segs = $doc->xpath('//seg[@id="A12"]');
if (count($segs) >= 1) {
    $seg = $segs[0];
}
// Same deletion procedure as above

以上がPHP の SimpleXML で特定の属性を持つ子要素を効果的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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