如何找出DOM元素/ DOM节点是否是PHP中DOMDocument的子节点?

时间:2013-07-29 09:49:11

标签: php dom domdocument appendchild

我有DOMElement。我如何才能知道它是DOMDocument的子节点?

问题的背景:

  

[DOMElement对象]是只读的。它可以附在文件上,   但是在节点之前可能不会将附加节点附加到此节点   与文档相关联。 (看到   here)。


编辑:

DOMNode#getNodePath()获取节点的XPath位置路径。根节点具有路径/。如果节点的位置不等于/,则节点是子元素。

但这仅适用于子节点。如果它是“独立”节点对象,则会发出警告:

$test = new \DOMNode();
echo $test->getNodePath();
  

警告:DOMNode :: getNodePath():无法在第16行的/path/too/foo.php中获取DOMNode

2 个答案:

答案 0 :(得分:0)

您应该检查ownerDocument属性:

if ($node->ownerDocument === $document) {
    // $node is part of $document
} else {
    $importedNode = $document->importNode($node, true);
    // now you can append the node wherever you choose in the document
}

答案 1 :(得分:-1)

检查它的类型:

if($dom instanceof \DOMDocument) { ... }