Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entferne ich effektiv einen übergeordneten Knoten mithilfe von XPath und SimpleXML in PHP?

Wie entferne ich effektiv einen übergeordneten Knoten mithilfe von XPath und SimpleXML in PHP?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 02:22:02976Durchsuche

How to Effectively Remove a Parent Node Using XPath and SimpleXML in PHP?

So entfernen Sie einen XPath-Knoten mit SimpleXML

SimpleXML ist eine PHP-Erweiterung, die die Arbeit mit XML vereinfacht. Es kann jedoch verwirrend sein, einen übergeordneten Knoten mithilfe von XPath-Abfragen zu entfernen.

Im angegebenen Beispiel verwendet der Code XPath, um ein bestimmtes Element anhand seiner ID zu finden, und versucht, seinen übergeordneten Knoten zu deaktivieren. Dieser Ansatz entfernt jedoch nicht wirklich den übergeordneten Knoten.

Um einen Knoten effektiv zu entfernen, können Sie die folgenden Schritte ausführen:

  1. Erstellen Sie ein neues SimpleXMLElement-Objekt aus der XML-Zeichenfolge .
  2. Verwenden Sie XPath, um den Zielknoten wie im Beispiel zu finden.
  3. Verwenden Sie die unset()-Methode für die Objektreferenz, um ihn zu entfernen.

Die geänderte Der Code würde so aussehen:

<code class="php">$xml = new SimpleXMLElement($xmlString);
$data = $xml->xpath('//items/info[item_id="' . $item_id . '"]');
unset($data[0]);</code>

Alternativer Ansatz mit DOMDocument

Alternativ können Sie die DOMDocument-Klasse zur weiteren Kontrolle der XML-Manipulation verwenden. Hier ist ein Beispiel:

<code class="php">$doc = new DOMDocument();
$doc->loadXML($xmlString);
$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>

Diese Methode entfernt den gesamten Artikelknoten für die angegebene Artikel-ID.

Das obige ist der detaillierte Inhalt vonWie entferne ich effektiv einen übergeordneten Knoten mithilfe von XPath und SimpleXML in PHP?. 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