2017-09-28 67 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