2017-09-28 64 views
0

帮助非常感谢。DOMXpath查询()不提供预期的上下文获取

无法在上下文中使DOMXpath拉动必要的DOMNodes。
不知怎的,在每个for迭代$a是什么似乎是所有从整个DOM 预期的孩子,而不是只有一个$childNode所有<a>一个的DOMNodeList(长度= 31)(和长度应该是4) 。

恕我直言:对我来说,感觉就像方面保持在HTML的根源,而不是相应的变化,以foreach ......如果是这样,才有可能改变其行为reqiured?

P.S. Vuola!,试图改变Xpath查询$a = $xpath->query('.')并收到DOMElement->tagName="html"
因此,除了my previous question on DOMXpath DOMNodeList之外,似乎DOMDocument并没有给出有关DOMXpath的地狱。 theese两者之间没有联系,没有可用的情况下使用...

答:咩,这只是我失明idiot..have错过)DOMXpath的第二个参数::查询(

$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

您需要提供上下文节点作为DOMXPath::query()方法的第二个参数。

你的具体情况,这将是:

$a = $xpath->query('.//a[@data-image-src]', $childNode); 
+0

他,他,谢谢。已经找到了我自己:) –

+0

太棒了!将来,如果您在这里提出问题并自己找出答案,回过头来写一个答案是一个好主意。这样,你会帮助任何有同样问题的人。 :) – salathe