DOMXpath query() 不提供预期的上下文提取
DOMXpath query() doesn't provide expected contextual fetching
非常感谢帮助。
无法使 DOMXpath 拉取必要的 DOM上下文中的节点。
不知何故在每个 for
迭代 $a
是一个 DOMNodeList (length=31) 似乎是 all <a>
来自整个 DOM 而不是 的预期 children 的 只有一个 $childNode
来自所有(并且长度应该是 4 ).
恕我直言:对我来说,感觉 context 仍然是 html 的根,而不是相应地更改为 foreach
... 如果是这样,是可以根据需要改变它的行为吗?
P.S。 Vuola!,已尝试更改 Xpath 查询 $a = $xpath->query('.')
并收到 DOMElement->tagName="html"
。
因此,除了
回答:嗯,只是我是个瞎子白痴..错过了 DOMXpath::query()
的第二个参数$dom = new DOMDocument();
$dom -> loadHTML('HTML data');
$xpath = new DOMXpath($dom);
$myDivs = $xpath -> query('//div[@price]');
for($i=0; $i <= $myDivs->length-1; $i++) {
$childNodes = $myDivs->item($i)->childNodes;
foreach($childNodes as $childNode){
$a=$xpath->query('.//a[@data-image-src]');
if($a){
usleep(1);
}
}
您需要提供 上下文节点 作为 DOMXPath::query()
方法的第二个参数。
在您的特定情况下,这将是:
$a = $xpath->query('.//a[@data-image-src]', $childNode);