2008-08-26 10 views
12

Estoy traduciendo mi código C# para los comentarios de video de YouTube en PHP. Para anidar correctamente las respuestas de comentarios, necesito reorganizar los nodos XML. En PHP estoy usando DOMDocument y DOMXPath que se corresponde estrechamente con C# XmlDocument. Llegué bastante lejos en mi traducción, pero ahora estoy atascado en obtener el nodo padre de un elemento DOMElement. Un DOMElement no tiene una propiedad parent_node(), solo un DOMNode proporciona esa propiedad.Determinar el nodo padre de DOMElement

Después de determinar que un comentario es una respuesta a un comentario anterior basado en la cadena "in-reply-to" en un elemento de enlace, necesito obtener su nodo primario para anidarlo debajo del comentario en el que se encuentra responder a:

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

Respuesta

20

DOMElement es una subclase de DOMNode, por lo que tienen la propiedad parent_node. Simplemente use $ domNode-> parentNode; para encontrar el nodo padre

En su ejemplo, el nodo principal de $ importnode es nulo, porque se ha importado en el documento y, por lo tanto, aún no tiene un elemento primario. Debe adjuntarlo a otro elemento antes de que tenga un padre.

+4

DOMElement extiende DOMNode y 'DOMNode :: parentNode' es público, por lo que esta propiedad también está disponible en DOMElement. http://php.net/manual/en/class.domnode.php y http://php.net/manual/en/class.domelement.php – feeela

0

No estoy del todo seguro de cómo funciona su código, pero parece que tiene un pequeño error en su código.

En la línea que ha publicado en su pregunta, tiene $link->parent_node(), pero en la respuesta con el fragmento de código completo tiene $link**s**->parent_node().

No creo que el s debería estar allí.

Además, creo que debería usar $ link-> parentNode, not $ link-> parent_node().

Cuestiones relacionadas