2011-12-13 116 views
0

我想要在SimpleXML对象中搜索具有相同节点名称的节点,无论它们嵌套得多深,并将它们的实例创建为一个数组。在SimpleXML(PHP)中获取其名称的节点实例

在HTML DOM中,我可以用JavaScript通过使用getElementsByTagName()来做到这一点。有没有办法在PHP中做到这一点?

回答

3

是使用XPath的

$ XML->的XPath('// DIV “);

这里$ xml是你的SimpleXML对象。

在这个例子中,你将得到所有 'DIV' 元素

+0

谢谢!我之前尝试过,但(为什么到此为止)它不起作用。现在我再试一次,它的工作原理。也许是缓存问题。 :S – headacheCoder

+0

您可能只使用了1个正斜杠?你需要使用2 //来查找所有元素。 –

1
$fname = dirname(__FILE__) . '\\xml\\crRoll.xml'; 
    $dom = new DOMDocument; 
    $dom->load($fname, LIBXML_DTDLOAD|LIBXML_DTDATTR); 
    $root = $dom->documentElement;      

    $xpath = new DOMXpath($dom); 
    $xpath->registerNamespace('cr', "http://www.w3.org/1999/xhtml"); 
    $candidateNodes = $xpath->query("//cr:break"); 

    foreach ($candidateNodes as $child) { 
    $max = $child->getAttribute('tstamp'); 
    } 

的阵列此找到所有BREAK节点(TSTAMP ATTR)使用XPath ...