Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich einen XPath-Knoten mit SimpleXML und DOMDocument löschen?

Wie kann ich einen XPath-Knoten mit SimpleXML und DOMDocument löschen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 21:25:29446Durchsuche

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

SimpleXML: Löschen eines XPath-Knotens

In diesem Artikel erfahren Sie, wie Sie einen übergeordneten Knoten effektiv aus einem XML-Dokument löschen können SimpleXML und XPath.

Die Einschränkungen von SimpleXML verstehen

Der bereitgestellte Code versucht, SimpleXML zu verwenden, um einen übergeordneten Knoten zu löschen, nachdem er über XPath gefunden wurde. Die unset()-Funktion von SimpleXML entfernt jedoch nur die in einer Variablen gespeicherte Objektreferenz, nicht den Knoten selbst.

DOMDocument to the Rescue

Um die Einschränkungen von SimpleXML zu überwinden, sollten Sie Folgendes in Betracht ziehen mit DOMDocument, das die Struktur von XML-Dokumenten direkter manipuliert.

Lösung mit DOMDocument

  1. Erstellen Sie ein DOMDocument-Objekt und laden Sie die XML-Datei hinein.
  2. Verwenden Sie XPath, um den Zielknoten abzufragen und auszuwählen.
  3. Entfernen Sie den übergeordneten Knoten mit $node->parentNode->removeChild($node).

Beispielcode und Ausgabe

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

Dieser Code entfernt die Knoten für das Produkt mit item_id 456, was zu einem geänderten XML-Dokument ohne diesen Knoten führt.

Fazit

DOMDocument ermöglicht eine robustere Manipulation von XML-Dokumenten, einschließlich direkter Entfernung von Knoten. Während SimpleXML für einfache XPath-Abfragen praktisch sein kann, ist DOMDocument eine geeignetere Wahl für komplexere XML-Manipulationsaufgaben.

Das obige ist der detaillierte Inhalt vonWie kann ich einen XPath-Knoten mit SimpleXML und DOMDocument löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn