Frage

Ich erhalte eine XML-Zeichenfolge aus einer bestimmten Quelle.Ich erstelle ein DOMDocument-Objekt und lade den XML-String hinein (mit DOMDocument::loadXML()).Dann navigiere ich mit verschiedenen Methoden durch das XML-Dokument (z. B.DOMXPath), bis ich den Knoten (natürlich einen DOMNode) finde, den ich möchte.

Dieser Knoten hat eine Reihe von Nachkommen, und ich möchte den gesamten Knoten (und seine Nachkommen) nehmen und daraus ein neues DOMDocument-Objekt erstellen.Ich bin mir nicht sicher, wie ich das machen soll.Ich habe versucht, ein neues DOMDocument zu erstellen und DOMDocument::importNode() zu verwenden, aber das scheint nur zu funktionieren, wenn das DOMDocument bereits einen Hauptdokumentknoten enthält. In diesem Fall wird der importierte Knoten als untergeordnetes Element des Hauptdokumentknotens angehängt. Das ist nicht das, was ich will – ich möchte, dass der importierte Knoten zum DOMDocument-Hauptknoten wird.

Vielleicht gibt es einen einfacheren Weg, dies zu tun (z. B.eine einfachere Möglichkeit, den Teil des Original-XML zu extrahieren, den ich in ein eigenes Dokument umwandeln möchte), aber ich weiß es nicht.Ich bin relativ neu bei DOMDocument, obwohl ich SimpleXMLElement oft genug verwendet habe, um mich darüber zu ärgern.

War es hilfreich?

Lösung

Sie können auch ein neues DOMDocument erstellen und appendChild() darauf aufrufen, um einen Root-Knoten hinzuzufügen:

$new = new DomDocument;
$new->appendChild($new->importNode($node, true));

Das hat bei mir funktioniert.

Andere Tipps

Können Sie nicht einfach ein neues DOMDocument erstellen und das XML des Knotens laden?

$new = new DOMDocument;
$new->loadXML($node->ownerDocument->saveXML($node));

Ich kann es momentan nicht ausprobieren, aber das sollte funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top