我想在SimpleXML对象中搜索具有相同节点名称的节点,无论它们嵌套的深度如何,并将它们的实例创建为数组。
在HTML DOM中,我可以使用getElementsByTagName()
来使用JavaScript。有没有办法在PHP中做到这一点?
答案 0 :(得分:3)
是使用xpath
$ XML->的xpath( '// DIV');
这里$ xml是你的SimpleXML对象。
在这个例子中,你将获得所有'div'元素的数组
答案 1 :(得分: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');
}
使用XPath ...
查找所有BREAK节点(tstamp attr)答案 2 :(得分:0)
仅限于DOMDocument::getElementsByTagName,
但是,你可以import/export SimpleXML into DOMDocument,
或者只是使用DOMDocument来解析XML。
关于Xpath的另一个答案,
它将返回节点的重复,如果你有类似的东西: -
<div><div>1</div></div>