Maison  >  Article  >  développement back-end  >  Comment puis-je supprimer un nœud XPath à l’aide de SimpleXML et DOMDocument ?

Comment puis-je supprimer un nœud XPath à l’aide de SimpleXML et DOMDocument ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 21:25:29357parcourir

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

SimpleXML : Supprimer un nœud XPath

Dans cet article, nous explorerons comment supprimer efficacement un nœud parent d'un document XML à l'aide SimpleXML et XPath.

Comprendre les limitations de SimpleXML

Le code fourni tente d'utiliser SimpleXML pour supprimer un nœud parent après l'avoir trouvé via XPath. Cependant, la fonction unset() de SimpleXML supprime uniquement la référence d'objet stockée dans une variable, pas le nœud lui-même.

DOMDocument to the Rescue

Pour surmonter les limitations de SimpleXML, considérez en utilisant DOMDocument, qui manipule plus directement la structure des documents XML.

Solution utilisant DOMDocument

  1. Créez un objet DOMDocument et chargez-y le fichier XML.
  2. Utilisez XPath pour interroger et sélectionner le nœud cible.
  3. Supprimez le nœud parent à l'aide de $node->parentNode->removeChild($node).

Exemple de code et de sortie

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

Ce code supprime l'attribut nœud pour le produit avec item_id 456, ce qui entraîne un document XML modifié sans ce nœud.

Conclusion

DOMDocument permet une manipulation plus robuste des documents XML, y compris la suppression directe de nœuds. Alors que SimpleXML peut être pratique pour les requêtes XPath de base, DOMDocument est un choix plus approprié pour les tâches de manipulation XML plus complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn