2014-01-10 135 views
0

我有以下HTML結構:domXpath得到祖先節點

<a class="class1" href="link"> 
    <div class="class2" id="result_0"> 
     <img imgstuffhere />  
     <div class="class3"> 
      <span>text</span> 
     </div> 
    </div> 
</a> 
<a class="class1" href="link"> 
    <div class="class2" id="result_0"> 
     <img imgstuffhere />  
     <div class="class3"> 
      <span>text</span> 
     </div> 
    </div> 
</a> 
etc.... 

我解析使用domXPath的頁面。我能夠通過對結果集的項目做

$items = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' class1 ')]"); 

然後i循環得到每個塊:

foreach($items as $item){ 
    $name = $xpath->query("descendant::*[contains(concat(' ', normalize-space(@class), ' '), ' class3 ')]", $item)->item(0)->nodeValue; 
    etc... 
} 

我的問題是,在循環中,我需要得到位於在href鏈接class1節點。

我試圖玩弄祖先的東西,但不可能使其工作。

ANSWER

$link = $item->getAttribute('href'); 

根本的伎倆。

+1

'contains(concat('',normalize-space(@class),'','class1')'可以通過編寫contains(@class,'class1')' – ChicagoRedSox

+0

@Jessica來提高效率,但我如何獲得鏈接? – user2733521

回答

1

$itemDomNode表示您選擇的a元素。

它有一個您應該能夠訪問的DOMNamedNodeMap屬性屬性。如果你想要的財產是href:

$link = $item->attributes->getNamedItem("href")->nodeValue; 
相關問題