非常感谢。
无法使DOMX路径在上下文中拉出必要的DOMNode
不知何故,每个for
迭代$a
是一个DOMNodeList(长度= 31)似乎是来自整个DOM的所有 <a>
而不是所有预期的孩子只有一个 $childNode
(长度应为4)。
恕我直言:对我而言,感觉 context 仍然是html的根源,而不是相应地更改为foreach
......如果是这样,是否有可能改变其行为作为reqiured?
P.S。 Vuola!,尝试更改过Xpath查询$a = $xpath->query('.')
并收到DOMElement->tagName="html"
。
所以,除了my previous question on DOMXpath DOMNodeList之外,似乎DOMDocument并没有给出关于DOMXpath的地狱。两个之间没有联系,没有可用的上下文...
答案:嗯,这只是我盲目的白痴......已经错过了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);
}
}
答案 0 :(得分:0)
您需要提供上下文节点作为DOMXPath::query()
方法的第二个参数。
在您的特定情况下,那将是:
$a = $xpath->query('.//a[@data-image-src]', $childNode);