如何通过XPath选择以特定的子节点开头的子节点

时间:2015-11-06 17:22:27

标签: html xml xpath

我有以下HTML树(请注意,ID为" msg - uniqueRandomNumber"):

<div class="elements">
    <div class="grp" id="msg-128736"> </div>
    <div class="grp" id="msg-312422"> </div>
    <div class="grp" id="msg-012312"> </div>
    <div class="grp" id="msg-567243"> </div>
</div>

我想匹配一组元素,其中第一个元素是特定的id。

示例:从grp开始匹配每个班级msg-012312

结果应该是:

    <div class="grp" id="msg-012312"> </div>
    <div class="grp" id="msg-567243"> </div>

2 个答案:

答案 0 :(得分:2)

Choroba很好的解释和正确答案都是正确的(+1),但这里有一个更简单的XPath:

//div[@class="grp" and not(./following-sibling::div[@id="msg-012312"])]

读为

  

选择所有未显示的grp div个元素   在div之前,ID为msg-012312

答案 1 :(得分:1)

要选择给定类和id的div,请使用

//div[@class="grp" and @id="msg-012312"]

要选择以下兄弟姐妹,您可以使用

following-sibling::div[@class="grp"]

将两个节点集与union运算符|放在一起:

( //div[@class="grp" and @id="msg-012312"]
| //div[@class="grp" and @id="msg-012312"]/following-sibling::div[@class="grp"] )