我想要在SimpleXML對象中搜索具有相同節點名稱的節點,無論它們嵌套得多深,並將它們的實例創建爲一個數組。在SimpleXML(PHP)中獲取其名稱的節點實例
在HTML DOM中,我可以用JavaScript通過使用getElementsByTagName()
來做到這一點。有沒有辦法在PHP中做到這一點?
我想要在SimpleXML對象中搜索具有相同節點名稱的節點,無論它們嵌套得多深,並將它們的實例創建爲一個數組。在SimpleXML(PHP)中獲取其名稱的節點實例
在HTML DOM中,我可以用JavaScript通過使用getElementsByTagName()
來做到這一點。有沒有辦法在PHP中做到這一點?
是使用XPath的
$ XML->的XPath('// DIV 「);
這裏$ xml是你的SimpleXML對象。
在這個例子中,你將得到所有 'DIV' 元素
只有在DOMDocument::getElementsByTagName,
但是,您可以import/export SimpleXML into DOMDocument,
或者乾脆使用的DOMDocument解析XML。
有關XPath提到
另一個答案, 它將返回節點的複製,如果你有這樣的: -
<div><div>1</div></div>
$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 ...
謝謝!我之前嘗試過,但(爲什麼到此爲止)它不起作用。現在我再試一次,它的工作原理。也許是緩存問題。 :S – headacheCoder
您可能只使用了1個正斜槓?你需要使用2 //來查找所有元素。 –