2012-04-26 46 views
0

我有以下HTML代碼段,xPath查詢不按預期工作。節點列表是空

Screen Shot of HTML Section where xPath query is not returning list of anchor <a> tags

我PHP中的DOM使用XPath獲取使用以下XPath查詢DIV內的所有錨標籤:

//div[@id="breadcrumbs"]/a 

我期望上面的查詢應該返回所有錨標籤的NodeList,在上面的HTML中應該是3。我沒有得到任何東西,我的下面的PHP代碼是跳過

 $breadCrumb = $xpath->query('//div[@id="breadcrumbs"]/a');  

    if($breadCrumb->length){ 
     $ctr = 0; 
     $sections = ""; 
     foreach($breadCrumb as $section){ 
      //$productBreadCrumb['section_'.$ctr] = $section->nodeValue; 
      $sections .= $section->nodeValue."|"; 
      $ctr++; 
     } 
     $productData['sections'] = $sections; 
    } 

我需要指導在這裏。非常感謝。

編輯:添加我正努力從基於的股利ID = 「breadcumbs」 上述段的XPath查詢DOM來抓取網頁> AAA

http://www.5starhookah.com/Apex-Black-NEW-A342.htm

感謝

感謝

+0

你確定div塊不是由Javascript生成的嗎? – 2012-04-26 19:38:05

+0

當我從瀏覽器查看頁面源並查看HTML時,帶錨標籤的Div也出現在那裏,我猜如果它是由JavaScript生成的,那麼View Source不應該顯示DIV和aaa HTML。這是正確的假設嗎? – Wikki 2012-04-26 19:44:43

回答

2

你的XPath是正確的,因爲你可以看到,如果你使用的樣品XHTML,如:

<div id="breadcrumbs"> 
<a class='breadcrumb'>Our Products</a> 
</div> 

與像一個工具: http://www.xpathtester.com/

因此,您的問題必須與DOM。如果您可以在運行XPath之前粘貼DOM的XHTML打印輸出,我們可以確認儘可能多,但看起來非常清楚的是,除非真的很奇怪,否則您的問題在於DOM。

3

xpath:命名空間的常見問題。

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 

意味着每個標籤實際上都在http://www.w3.org/1999/xhtml命名空間中。

查看文檔以查看是否可以設置默認名稱空間或者是否可以別名(例如,如果別名是「x」,查詢將看起來像// x:div [@ id =「breadcrumbs 「]/X:一個

另外,您可以通過刪除字符串«的xmlns =騙 「http://www.w3.org/1999/xhtml」»解析XML之前