domXpath获取祖先节点

时间:2014-01-10 14:25:48

标签: php domxpath

我有以下html结构:

<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 ')]");

然后我循环结果项目集:

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

我的问题是,在循环中,我需要获取位于class1节点中的href链接。

我试图玩祖先的东西,但不可能使它有效。

ANSWER

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

简单地完成了这个伎俩。

1 个答案:

答案 0 :(得分:1)

$item是代表您选择的a元素的DomNode

它有一个属性属性,你应该可以访问DOMNamedNodeMap。如果你想要的属性是href:

$link = $item->attributes->getNamedItem("href")->nodeValue;