2014-01-10 102 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; 
相关问题