我不得不重写程序的一部分,使用XMLReader选择XML文件的一部分进行处理.
以这个简化的XML为例:
这次调用xpath():
$bets = $xml->xpath(
"//odds/sport/region/group/event/bet/selection[contains(@selectionid,'".$selectionToFind."')]/.."
);
将选择整个< bet>节点及其子节点(< selection>节点).
但是,我的代码只会选择一个< selection>具有给定selectionid的节点:
$reader = new XMLReader;
$reader->open('file.xml');
while($reader->read()) {
$event = $reader->getAttribute($value);
if ($event == 781016.1 ) {
$node = new SimpleXMLElement($reader->readOuterXML());
var_dump($node);
break;
}
}
如何使用XMLReader复制xpath()的行为,以便我选择< bet>节点及其子节点而不仅仅是一个< selection>儿童?
我想这个问题归结为:我可以选择整个父节点< bet>通过孩子的属性值,例如, < selection selectionid =“[some_value]”>?