【发布时间】:2018-03-09 22:46:01
【问题描述】:
非常感谢您的帮助。
无法让 DOMXpath 在上下文中拉取必要的 DOMNode。
不知何故,在每次 for 迭代 $a 是一个 DOMNodeList (length=31) 似乎是 all <a> 来自整个 DOM 而不是的预期子级只有一个 $childNode 来自所有(长度应为 4)。
恕我直言:对我来说,感觉就像 context 保留在 html 的根目录,而不是相应地更改为 foreach... 如果是这样,是否可以根据需要更改其行为?
附: Vuola!,已尝试更改 Xpath 查询 $a = $xpath->query('.') 并收到 DOMElement->tagName="html"。
所以,除了my previous question on DOMXpath DOMNodeList 之外,似乎 DOMDocument 并没有给 DOMXpath 带来麻烦。这两者之间没有联系,没有可用的上下文使用......
Answer: 嗯,只是我瞎了白痴..错过了 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);
}
}
【问题讨论】:
标签: php domdocument domxpath