2008-08-26 3 views
12

Я переводил код C# для комментариев на видео YouTube на PHP. Чтобы правильно вложить комментарии комментариев, мне нужно переустановить узлы XML. В PHP я использую DOMDocument и DOMXPath, которые тесно соответствуют C# XmlDocument. Я получил довольно далеко в моем переводе, но теперь я застрял в получении родительского узла DOMElement. DOMElement не имеет свойства parent_node(), только свойство DOMNode предоставляет это свойство.Определить родительский узел DOMElement

После определения того, что комментарий является ответом на предыдущий комментарий, основанный на строке «in-reply-to» в элементе ссылки, мне нужно получить его родительский узел, чтобы вложить его под комментарий, в котором он находится ответить:

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

ответ

20

DOMElement является подклассом DOMNode, поэтому он имеет parent_node свойство. Просто используйте $ domNode-> parentNode; для поиска родительского узла.

В вашем примере родительский узел $ importnode имеет значение NULL, поскольку он был импортирован в документ и, следовательно, еще не имеет родителя. Вам нужно прикрепить его к другому элементу, прежде чем он родит.

+4

DOMElement расширяет DOMNode и `DOMNode :: parentNode` является общедоступным, поэтому это свойство доступно и в DOMElement. http://php.net/manual/en/class.domnode.php и http://php.net/manual/en/class.domelement.php – feeela 2011-09-06 15:30:55

0

Я не совсем уверен, как работает ваш код, но похоже, что у вас небольшая ошибка в коде.

На линии, которую вы отправили в своем вопросе, у вас есть $link->parent_node(), но в ответе с полным фрагментом кода у вас есть $link**s**->parent_node().

Я не думаю, что s должен быть там.

Кроме того, я думаю, вы должны использовать $ link-> parentNode, а не $ link-> parent_node().

Смежные вопросы