确定 DOMElement 的父节点

Determine Parent Node Of DOMElement

提问人:user2601 提问时间:8/27/2008 最后编辑:Ijas Ameenudeenuser2601 更新时间:1/18/2019 访问量:31323

问:

我正在将 YouTube 视频评论的 C# 代码翻译成 PHP。为了正确嵌套评论回复,我需要重新排列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);
PHP XML DOM

评论


答:

28赞 Marius 8/27/2008 #1

DOMElementDOMNode 的子类,因此它确实具有parent_node属性。只需使用 $domNode->parentNode;以查找父节点。

在示例中,$importnode 的父节点为 null,因为它已导入到文档中,因此还没有父节点。您需要先将其附加到另一个元素,然后它才具有父元素。

评论

6赞 feeela 9/6/2011
DOMElement 扩展了 DOMNode 并且是公共的,因此此属性在 DOMElement 上也可用。php.net/manual/en/class.domnode.phpphp.net/manual/en/class.domelement.phpDOMNode::parentNode
1赞 Marius 8/27/2008 #2

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

在你的问题中发布的行中,你有 ,但在带有整个代码片段的答案中,你有 .$link->parent_node()$link**s**->parent_node()

我不认为应该在那里。s

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

3赞 Dimas Lanjaka 3/31/2018 #3

替换为parent_node()parentNode