简体   繁体   English

XPATH DomDocument检索div元素的第一个节点

[英]XPATH DomDocument retrieivng first node of div elements

Here is my HTML: 这是我的HTML:

<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>

Here is the XPATH's I've used: 这是我用过的XPATH:

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

What I'm trying to accomplish is retrieving only the ones I explicitly stated as to retrieve. 我想要完成的只是检索我明确声明要检索的那些。 When I use the second Xpath ( (//div[@class="content"]//div[@class="post"]//@src)[1] ) one it only provides the first img src and thats it (not the first one for every div post element) 当我使用第二个Xpath( (//div[@class="content"]//div[@class="post"]//@src)[1] )一个它只提供第一个img src,就是这样(不是每个div post元素的第一个)

Use the following xpath query: 使用以下xpath查询:

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

Example: 例:

$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);
}

Output: 输出:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM