繁体   English   中英

如何在 XPATH 中选择具有相同属性 ID 的第二个元素?

[英]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.

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