2013-10-13 55 views
0

这里的第一个节点是我的HTML:XPATH的DomDocument retrieivng div元素

<div class="content"> 
    <div class="post"> 
     <img class="img" src="getme"/> (<~~ retrieve this one) 
     <img class="img" src="notme"/> 
     <img class="img" src="notme"/> 
    </div> 
    <div class="post"> 
     <img class="img" src="getme"/> (<~~ retrieve this one) 
     <img class="img" src="notme"/> 
     <img class="img" src="notme"/> 
    </div>  
</div> 

这里是XPATH的我用:

 //div[@class="content"]//div[@class="post"]//@src[1] 
    (//div[@class="content"]//div[@class="post"]//@src)[1] 

我试图做到的是仅检索我明确表示要检索的那些。当我使用第二个XPath((//div[@class="content"]//div[@class="post"]//@src)[1])一种它仅提供第一IMG SRC并且那它(不是第一个为每一个DIV后元件)

回答

2

使用以下XPath查询:

//div[@class="post"]/img[1]/@src 

实施例:

$html = <<<EOF 
<div class="content"> 
    <div class="post"> 
     <img class="img" src="getme"/> (<~~ retrieve this one) 
     <img class="img" src="notme"/> 
     <img class="img" src="notme"/> 
    </div> 
    <div class="post"> 
     <img class="img" src="getme"/> (<~~ retrieve this one) 
     <img class="img" src="notme"/> 
     <img class="img" src="notme"/> 
    </div>  
</div> 
EOF; 

$doc = new DOMDocument(); 
@$doc->loadHTML($html); 

$selector = new DOMXPath($doc); 

foreach($selector->query('//div[@class="post"]/img[1]/@src') as $node) { 
    var_dump($node->nodeValue); 
} 

输出:

string(5) "getme" 
string(5) "getme"