2008-08-26 12 views
12

Ich übersetze meinen C# -Code für YouTube-Videokommentare in PHP. Um Kommentarantworten richtig zu verschachteln, muss ich XML-Knoten neu anordnen. In PHP verwende ich DOMDocument und DOMXPath, die C# XmlDocument genau entspricht. Ich bin ziemlich weit in meiner Übersetzung angekommen, aber jetzt bin ich dran, den Elternknoten eines DOMEelements zu bekommen. Ein DOMElement verfügt nicht über die Eigenschaft parent_node(), nur ein DOMNode stellt diese Eigenschaft bereit.Ermitteln des übergeordneten Knotens von DOMEelement

Nachdem festgestellt wurde, dass ein Kommentar eine Antwort auf einen vorherigen Kommentar in der Zeichenfolge "in-reply-to" in einem Verknüpfungselement ist, muss ich seinen übergeordneten Knoten abrufen, um ihn unterhalb des Kommentars zu verschachteln Antwort auf:

// Get the parent entry node of this link element 
$importnode = $objReplyXML->importNode($link->parent_node(), true); 

Antwort

20

DOMElement eine Unterklasse von DOMNode ist, so dass es parent_node Eigenschaft hat. Verwenden Sie einfach $ domNode-> parentNode; um den Elternknoten zu finden.

In Ihrem Beispiel ist der übergeordnete Knoten von $ importnode null, weil er in das Dokument importiert wurde und daher noch kein übergeordnetes Element hat. Sie müssen es an ein anderes Element anhängen, bevor es über ein Elternelement verfügt.

+4

DOMElement erweitert DOMNode und 'DOMNode :: parentNode' ist öffentlich, daher ist diese Eigenschaft auch auf DOMElement verfügbar. http://php.net/manual/en/class.domnode.php und http://php.net/manual/en/class.domele.php – feeela

0

Ich bin nicht ganz sicher, wie Ihr Code funktioniert, aber es scheint, wie Sie einen kleinen Fehler in Ihrem Code haben.

In der Zeile, die Sie in Ihrer Frage geschrieben haben, haben Sie $link->parent_node(), aber in der Antwort mit dem gesamten Code-Schnipsel haben Sie $link**s**->parent_node().

Ich glaube nicht die s da sein sollte.

Auch ich denke, Sie sollten $ link-> parentNode, nicht $ link-> parent_node() verwenden.

Verwandte Themen