如何用XPath的contains实现非精确匹配筛选path元素
匹配以特定前缀开头的group元素对应的path节点
核心解决方案(XPath 1.0 兼容,大多数工具支持)
要筛选group元素以rgrp开头的path节点,应该使用starts-with()函数,而非contains()(contains()会匹配任何位置包含rgrp的内容,不符合前缀匹配需求):
//recent/item/location[starts-with(group/text(), 'rgrp')]/path
处理含空白的情况
如果group元素内部可能存在换行、空格等空白字符,可先用normalize-space()清理后再匹配:
//recent/item/location[starts-with(normalize-space(group), 'rgrp')]/path
XPath 2.0+ 正则写法(支持正则的环境适用)
若你的XPath引擎支持2.0及以上版本,也可使用正则表达式的matches()函数明确指定前缀匹配:
//recent/item/location[matches(group/text(), '^rgrp')]/path
效果验证
针对你提供的XML示例:
- 第一个
item的group值为rgrp1,符合前缀规则,对应的path节点会被匹配 - 第二个
item的group值为fgrp6,不符合规则,不会被匹配
内容的提问来源于stack exchange,提问作者Graham Chandler
相关产品推荐
相关产品推荐

