簡體   English   中英

PHP5:在DOMDocument中查找根節點

[英]PHP5: Find Root Node in DOMDocument

我有一個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。)

DOMElement擴展了DOMNode

您可以通過$ d-> documentElement獲取Root DOMElement

DOM模型 - W3C已將DOM分解為不同類型節點的樹結構。 Node接口是所有元素的基礎接口。 實現此接口的所有對象都公開了處理子進程的方法。

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

根據PHP文檔, DOMElement是DOMNode的子類 ,因此它應該繼承hasChildNodes() - 方法。

在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發布到SO我試圖找到如何在5.1.3之前執行此操作時遇到的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM