Maison > développement back-end > tutoriel php > Comment supprimer un nœud parent dans SimpleXML à l'aide de XPath ?

Comment supprimer un nœud parent dans SimpleXML à l'aide de XPath ?

Linda Hamilton
Libérer: 2024-10-26 12:56:29
original
266 Les gens l'ont consulté

How to Remove a Parent Node in SimpleXML Using XPath?

SimpleXML - Suppression de nœuds XPath

Question :

Dans SimpleXML, comment puis-je supprimer un nœud parent associé à un élément spécifique identifié via XPath ?

Description du problème :

L'utilisation du code suivant pour rechercher et supprimer un élément avec un item_id spécifique échoue :

<code class="php">$xml = simplexml_load_file($filename);
$data = $xml->xpath('//items/info[item_id="' . $item_id . '"]');
$parent = $data[0]->xpath("parent::*");
unset($parent);</code>
Copier après la connexion

L'instruction unset ($ parent) n'élimine pas le parent node.

Réponse :

Appeler directement unset() sur une variable d'objet ($parent dans ce cas) supprime uniquement la référence d'objet, pas le nœud lui-même.

Solution utilisant DOMDocument :

<code class="php">$doc = new DOMDOcument;
$doc->loadxml(...XML string...);
$item_id = 456;

$xpath = new DOMXPath($doc);
foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
  $node->parentNode->removeChild($node);
}</code>
Copier après la connexion

Cette boucle parcourt la correspondance nœuds, supprime le nœud parent et met à jour l'objet $doc.

Sortie :

<code class="xml"><?xml version="1.0"?>
<foo>
  <items>
    <info>
      <item_id>123</item_id>
    </info>
  </items>

  <items>
    <info>
      <item_id>789</item_id>
    </info>
  </items>
</foo></code>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal