[英]How to select the second element with same attribute ID in an XPATH?
想象一个 HTML 片段如下:
<div>
<div class="content">test1</div>
</div>
<div>
<div class="content">test2</div>
</div>
<div>
<div class="content">test3</div>
</div>
我使用的 xpath 是//div[@class='content']
现在,我想引用第二个 div 元素。 我应该在我的 xpath 中添加什么? TIA。
到目前为止已经提出了两种解决方案,但它们都没有从您在问题中显示的 HTML 片段中选择任何内容。 当简单地将它包装在一个根元素中时:
<root>
<div>
<div class="content">test1</div>
</div>
<div>
<div class="content">test2</div>
</div>
<div>
<div class="content">test3</div>
</div>
</root>
//div[@class='content'][2]
和//div[2][@class='content']
从该文档中不选择任何//div[2][@class='content']
。 他们都假设第二个谓词(在[
和]
之间)应用于中间结果序列,但第二个谓词也应用于初始文档树的节点。 要选择“中间”结果的子集,请在第一部分周围使用括号:
(//div[@class='content'])[2]
并且单个结果将是
<div class="content">test2</div>
更多细节
//div[@class='content'][2]
表示:
从文档中的任何位置选择所有名为
div
元素,但仅选择那些具有值等于“content”的class
属性的元素。 在这些选定节点中,仅保留div[@class = 'content']
节点的第二个div[@class = 'content']
元素。
因此,此表达式只会从以下文档中选择一个结果:
<root>
<div>
<div class="content">test1</div>
</div>
<div>
<div class="content">test2</div>
<div class="other">other</div>
<div class="content">MATCH</div>
</div>
<div>
<div class="content">test3</div>
</div>
</root>
//div[2][@class='content']
表示:
从文档中的任何位置选择所有名为
div
元素,但仅选择作为其父元素的第二个子元素的元素。 在那些选定的节点中,只保留那些具有值等于“内容”的class
属性的节点。
仅在给定文档的情况下生成匹配项
<root>
<div>
<div class="content">test1</div>
</div>
<div>
<div class="other">other</div>
<div class="content">MATCH</div>
</div>
<div>
<div class="content">test3</div>
</div>
</root>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.