我想要在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 //来查找所有元素。 –