2013-03-13 85 views
1
<a> 
    <b id="bye"> 
     <name>john</name> 
    </b> 
    <b id="goodbye"> 
     <name>emma</name> 
    </b> 
</a> 

使用XML文件,我想打印的東西,如:PHP - 獲取標記的位置的DomDocument

b with id:bye has position 0 
b with id:goodbye has position 1 
+2

定義的位置?相對於什麼?兄弟姐妹指數?你如何顯示這些項目?你是通過domnodelist循環嗎? – PeeHaa 2013-03-13 11:04:39

+0

定義B標籤的重複次數,並打印每個標籤的位置。沒有行號和所有文檔 – estacontrolao 2013-03-13 11:07:21

+0

您使用哪個庫來解析此xml? – haim770 2013-03-13 11:09:03

回答

2

您可以使用DOM的XPath來得到你所需要的(更新輸出更好匹配原始帖子)。

<?php 

$xml = '<a> 
    <b id="bye"> 
     <name>john</name> 
    </b> 
    <b id="goodbye"> 
    <name>emma</name> 
    </b> 
</a>'; 


$dom = new DOMDocument(); 
$dom->loadXML($xml); 

foreach ($dom->getElementsByTagName("b") as $domNode) { 
    print "b with id:{$domNode->attributes->getNamedItem("id")->nodeValue} has position {$domNode->getNodePath()}\n"; 
} 

應爲您提供:

b with id:bye has position /a/b[1] 
b with id:goodbye has position /a/b[2] 
+0

我從文件中獲取xml – estacontrolao 2013-03-13 11:11:42

+0

您可以使用loadXML(file_get_contents($ yourFile))或loadHTMLFile($ yourFile) – conrad10781 2013-03-13 11:13:05