2011-12-13 114 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 ...