2013-03-13 48 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