2015-06-01 33 views
0

我試圖解析這個HTML頁面的方式:http://www.valor.com.br/valor-data/moedasPHP的DomXPath不工作,預計

對於一個簡單的開始,我試圖讓所有td元素與class="left"和呼應自己內心的文本。我正在努力理解就是爲什麼這個代碼:

$finder = new DomXPath($dom); 
    $tds = $finder->query("//*[@class='left']"); 
    foreach ($tds as $td) { 
     echo $td->textContent; 
    } 

給我的預期輸出(一堆屬於那些td元件,其不值得粘貼在這裏的話),而這一點:

$finder = new DomXPath($dom); 
    $tds = $finder->query("//td[@class='left']"); 
    foreach ($tds as $td) { 
     echo $td->textContent; 
    } 

一無所獲。我也嘗試過$finder->query("//td")來簡單地獲取所有td元素,但它就像DomXPath無法識別標籤名稱。有沒有人遇到過這個問題?

+0

'$ finder->查詢( 「// TD」)'應適用於所有的TD標籤 – Drakes

+0

@drakes事實並非如此。這就是問題的原因。 – lucasnadalutti

+0

你輸入了'$ finder-> query(「td」)',它什麼都不會做 – Drakes

回答

2

我還沒有測試過,但這可能是一個命名空間問題。您的輸入頁面是XHTML,並已正確聲明XHTML名稱空間。因此,您需要註冊一個名稱空間前綴並在查詢中使用該前綴。

像這樣的事情

$finder = new DomXPath($dom); 
$finder->registerNamespace("x", "http://www.w3.org/1999/xhtml"); 
$tds = $finder->query("//x:td[@class='left']"); 
foreach ($tds as $td) { 
    echo $td->textContent; 
} 
+0

牛眼!謝謝! – lucasnadalutti