Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lösche ich Knoten aus einem XML-Dokument mit SimpleXML und DOMDocument in PHP?

Wie lösche ich Knoten aus einem XML-Dokument mit SimpleXML und DOMDocument in PHP?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 06:15:38990Durchsuche

How do I delete nodes from an XML document using SimpleXML and DOMDocument in PHP?

Knoten in SimpleXML löschen

XPath-Knoten abfragen

So löschen Sie einen Knoten in SimpleXML mit XPath, folgen Sie diesen Schritten:

  1. Laden Sie das XML-Dokument in ein SimpleXMLElement-Objekt.
  2. Verwenden Sie die xpath()-Methode, um nach dem gewünschten Knoten zu suchen.
  3. Speichern das Ergebnis in einer Variablen, z. B. $data.

Knotenentfernung

Um den übergeordneten Knoten des ausgewählten Knotens zu entfernen, können Sie unset($) nicht verwenden Elternteil). Stattdessen müssen Sie die Methode __unset() verwenden oder auf DOMDocument zurückgreifen.

Verwendung von __unset()

Die Methode __unset() wird aufgerufen, wenn Sie versuchen, die Einstellung aufzuheben eine Eigenschaft eines Objekts. Um einen Knoten mit __unset() zu entfernen, erstellen Sie ein neues SimpleXMLElement-Objekt und deaktivieren Sie den gewünschten Knoten, wie unten gezeigt:

<code class="php">$newNode = new SimpleXMLElement('<a><b></b></a>');
unset($newNode->b);
echo $newNode->asxml(); // Prints <a></a></code>

Verwenden von DOMDocument

DOMDocument bietet mehr detaillierte Kontrolle über die XML-Manipulation. So entfernen Sie einen Knoten mit DOMDocument:

  1. Erstellen Sie ein neues DOMDocument-Objekt und laden Sie das XML-Dokument.
  2. Verwenden Sie die xpath()-Methode, um nach dem gewünschten Knoten zu suchen.
  3. Entfernen Sie den Knoten mit parentNode->removeChild($node).

Beispiel mit DOMDocument

<code class="php">$doc = new DOMDocument;
$doc->loadxml('<foo><items><info><item_id>123</item_id></info></items></foo>');
$item_id = 123;

$xpath = new DOMXpath($doc);
foreach ($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
  $node->parentNode->removeChild($node);
}
echo $doc->savexml(); // Prints <foo><items><info><item_id>123</item_id></info></items></foo></code>

Mit diesen Techniken können Sie Entfernen Sie mithilfe von SimpleXML und DOMDocument effektiv Knoten aus XML-Dokumenten.

Das obige ist der detaillierte Inhalt vonWie lösche ich Knoten aus einem XML-Dokument mit SimpleXML und DOMDocument 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