2017-09-28 6 views
0

ヘルプが大変感謝しています。DOMXpath query()がコンテキスト・フェッチを期待していません

コンテキストで必要なDOMNodeをDOMXpathにプルさせることはできません。
for反復でどういうわけ $a(4であるべきであり、長さ)だけ$childNode全てから全体ではなくDOM からの予想される子供の全て<a>と思われるものののDOMNodeList(長さ= 31)であります。

私見:もしそうならコンテキストが... HTMLのルートではなく、foreachに応じて変更のままであるように私にはそれが感じている、それはreqiuredとしての動作を変更することは可能でしょうか?

P.S. Vuola!は、Xpathクエリ$a = $xpath->query('.')を変更し、DOMElement->tagName="html"を受け取りました。
したがって、my previous question on DOMXpath DOMNodeListに加えて、DOMDocumentはDOMXpathについての地獄を与えていないようです。 theese 2間の接続、利用可能なしコンテキストの使用状況...

回答:MEH、それはちょうど私は盲目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()メソッドの第2引数としてコンテキストノードを指定します。あなたの特定のケースで

、それは次のようになります。

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

彼と彼のおかげ。自分自身を発見した:) –

+0

それは素晴らしいです!将来、ここで質問して答えを見つけたら、戻って答えを書くことをお勧めします。この方法で、あなたは同じ質問をしている他の誰かを助けるでしょう。 :) – salathe

関連する問題