确定DOM元素的父节点

18

我正在将我的C#代码翻译成PHP,用于处理YouTube视频评论。为了正确嵌套评论回复,我需要重新排列XML节点。在PHP中,我使用DOMDocument和DOMXPath,这与C#的XmlDocument非常相似。我已经对我的翻译做了很多工作,但现在卡在了如何获取DOMElement的父节点上。DOMElement没有parent_node()属性,只有DOMNode提供该属性。

在确定评论是基于链接元素中字符串"in-reply-to"的先前评论的回复之后,我需要获取其父节点以便将其嵌套在所回复评论的下面:

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

28
DOMElementDOMNode的子类,因此它确实具有parent_node属性。只需使用$domNode->parentNode;即可找到父节点。
在你的例子中,$importnode的父节点为空,因为它已经被导入到文档中,因此还没有父节点。你需要将它附加到另一个元素上,然后它才会有父节点。

6
DOMElement继承自DOMNode,因此DOMNode::parentNode是公共属性,在DOMElement上也可以使用。参见 http://php.net/manual/zh/class.domnode.php 和 http://php.net/manual/zh/class.domelement.php。 - feeela

3

parent_node()替换为parentNode


1

我不是很确定你的代码是如何工作的,但似乎你的代码中有一个小错误。

在你提问中的那一行代码中,你写的是$link->parent_node(),但在完整代码段的答案中,你写的是$link**s**->parent_node()

我认为那个 s 不应该出现。

另外,我认为你应该使用 $link->parentNode 而不是 $link->parent_node()。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接