PHP5:在DOMDocument中查找根节点

Bla*_*laM 13 php xml dom root-node

我有一个PHP5 DOMDocument,我尝试找到根节点(不是根元素).

例:

<test>
    <element>
        <bla1>x</bla1>
        <bla2>x</bla2>
    </element>
    <element>
        <bla1>y</bla1>
        <bla2>y</bla2>
    </element>
    <element>
        <bla1>z</bla1>
        <bla2>z</bla2>
    </element>
</test>
Run Code Online (Sandbox Code Playgroud)

我想得到"测试"的DOMNode,以便我可以调用 - 例如 - hasChildNodes.我可以得到"documentElement",但这是一个DOMElement.也许我可以从那里出发?

$d = DOMDocument::loadXML($xml);
// [... do some stuff here to find document's root node ...]
if ($rootnode->hasChildNodes()) echo 'yayy!'
Run Code Online (Sandbox Code Playgroud)

谁能填补空白?我似乎是盲目的.

(显然不仅仅是我想要调用的hasChildNodes - 所以不,找到另一个方法来查找文档是否包含东西也无济于事.这只是我的简单示例.我最后需要一个DOMNode.)

Cri*_*oma 61

DOMElement扩展了DOMNode.

您可以通过$ d-> documentElement 获取Root DOMElement.

  • 这实际上应该是勾选的答案! (12认同)
  • 这是该属性的文档http://www.php.net/manual/en/class.domdocument.php#domdocument.props.documentelement (2认同)

ada*_*ost 15

DOM模型 - W3C已将DOM分解为不同类型节点的树结构.Node接口是所有元素的基础接口.实现此接口的所有对象都公开了处理子进程的方法.

$dom=new DomDocument;
$dom->Load("file.xml");
$root=$dom->documentElement; // Root node
Run Code Online (Sandbox Code Playgroud)


Pat*_*and 5

根据PHP文档,DOMElement是DOMNode的子类,因此它应该继承hasChildNodes()-method.