如何使用XQuery获取XML倒数第二个及最后一个datapoint值
XQuery查找序列倒数第二个数据项实现
直接利用last()函数的偏移特性即可定位倒数第二个节点,不需要额外做序列遍历或单独计算长度。
示例XML结构
<item> <datapoint>5</datapoint> </item> <item> <datapoint>4</datapoint> </item> <item> <datapoint>6</datapoint> </item> <item> <datapoint>8</datapoint> </item> <item> <datapoint>9</datapoint> </item>
具体取值写法
- 取最后一个datapoint值(原有可用写法)
//item/datapoint[last()]/string()
针对上述示例的返回结果:9
- 取倒数第二个datapoint值
在位置谓词中使用last() - 1做定位即可,逻辑和取最后一个节点完全一致:
//item/datapoint[last() - 1]/string()
针对上述示例的返回结果:8
注意:如果XML中item节点总数只有1个,
last() - 1的计算结果为0,不会匹配到任何节点,也不会抛出执行错误,如果业务场景需要兼容单节点情况,可以额外加节点总数判断做兜底。
内容的提问来源于stack exchange,提问作者Andy Reagan
相关产品推荐
相关产品推荐

