PHP5:查找DOM文档根节点(PHP5: Find Root Node in DOMDocumen

2019-06-27 05:23发布

我有一个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>

我想“测试”的的DOMNode,这样我可以称之为 - 例如 - hasChildNodes。 我可以得到“documentElement”,但是这是一个一个DOMElement。 也许我可以从那里?

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

谁可以填补这个空白? 我似乎是盲目的。

(显然,这不仅是我想打电话给hasChildNodes - 所以,不,它并不能帮助找到另一种方法来找出如果文档中包含的东西,只是为了我的简单的例子,我需要在最后一个的DOMNode。)

Answer 1:

按照PHP文档一个DOMElement是的DOMNode的一个子类 ,所以它应该继承hasChildNodes() -方法。



Answer 2:

一个DOMElement延伸的DOMNode。

您可以通过$ D-> documentElement获取 一个DOMElement。



Answer 3:

DOM型号 - W3C已经分解的DOM成不同类型的节点的树结构。 节点接口是所有元件的基本接口。 实现此接口的所有对象公开的与孩子打交道的方法。

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


Answer 4:

到PHP 5.1.3这个家伙有它舔之前

https://macfoo.wordpress.com/2009/06/03/getting-the-root-node-from-an-xml-string

/**
 * function getXMLRootNode
 * @param string An xml string
 * @return string Return XML root node name
 */

function getXMLRootNode($xmlstr)
{
 // Create DOM model
 $doc = new DOMDocument();

 // Load the XML string
 if(!$doc->loadXML($xmlstr))
 {
 throw new Exception('Unable to parse XML string');
 }

 // Find the root tag name
 $root = $doc->documentElement;

 if(!isset($root))
 {
 throw new Exception('Unable to find XML root node');
 }

 if(!isset($root->nodeName))
 {
 throw new Exception('Unable to find XML root node name');
 }

 return $root->nodeName;
}

CROSS发表于做题,我试图找到如何做到这一点的预5.1.3打

  • 获取使用SimpleXML XML文档的根节点
  • PHP5:查找DOM文档根节点


文章来源: PHP5: Find Root Node in DOMDocument