选择一系列节点的XPath是什么?

时间:2010-07-28 16:18:19

标签: xml xpath

我有一个XML文件,其结构如下:

 <foo>
     <bar></bar>
     <bar></bar>
     ...
</foo>

我不知道如何抓取一系列节点。有人能给我一个XPath表达式的示例,它可以抓取条形节点100-200吗?

3 个答案:

答案 0 :(得分:62)

使用

/*/bar[position() >= 100 and not(position() > 200)]

请注意

  1. 正确选择位置100到200(含)的bar元素。

  2. 对此XPath表达式的求值可以比使用//缩写的表达式快许多倍,因为后者会导致对其根是上下文节点的树进行完整扫描。 在可能的情况下,请尽量避免使用//缩写

答案 1 :(得分:9)

//foo/bar[100 <= position() and position() < 200]

答案 2 :(得分:6)

不是fn:subsequence最好的方式吗?

subsequence( /foo/bar, 100, 101 )

返回位置100到200的所有项目,即101项(如果源序列较短,则返回更少)。