我有一个XML文件,其结构如下:
<foo>
<bar></bar>
<bar></bar>
...
</foo>
我不知道如何抓取一系列节点。有人能给我一个XPath表达式的示例,它可以抓取条形节点100-200吗?
答案 0 :(得分:62)
使用强>:
/*/bar[position() >= 100 and not(position() > 200)]
请注意:
正确选择位置100到200(含)的bar
元素。
对此XPath表达式的求值可以比使用//
缩写的表达式快许多倍,因为后者会导致对其根是上下文节点的树进行完整扫描。 在可能的情况下,请尽量避免使用//
缩写。
答案 1 :(得分:9)
//foo/bar[100 <= position() and position() < 200]
答案 2 :(得分:6)
不是fn:subsequence
最好的方式吗?
subsequence( /foo/bar, 100, 101 )
返回位置100到200的所有项目,即101项(如果源序列较短,则返回更少)。