求助修改VBA中XPath表达式以实现XML字符串部分匹配
解决VBA中XPath字符串部分匹配的问题
嗨,你之前用[Name='ZCOMP_A_']没生效是因为这是精确匹配,只有当Name节点的文本完全等于ZCOMP_A_的时候才会选中。你提到的starts-with和contains确实是XPath里做部分匹配的正确方式,下面给你适配到你的VBA代码里:
两种常用的部分匹配方案
1. 匹配以指定字符串开头的Name(starts-with)
如果你的需求是找Name以ZCOMP_A_开头的Characteristic节点,用这个:
Dim targetText As String targetText = xmlhttpResponse.SelectNodes("/CharacteristicList/Characteristic[starts-with(Name, 'ZCOMP_A_')]/ComplexValueList/ValueItem/Value").Item(0).Text
2. 匹配任意位置包含指定字符串的Name(contains)
如果你的需求是找Name**任意位置包含ZCOMP_A_**的Characteristic节点,用这个:
Dim targetText As String targetText = xmlhttpResponse.SelectNodes("/CharacteristicList/Characteristic[contains(Name, 'ZCOMP_A_')]/ComplexValueList/ValueItem/Value").Item(0).Text
小提示
- XPath的
starts-with和contains默认是大小写敏感的,如果需要忽略大小写,可以结合translate函数处理(比如把Name文本和匹配字符串都转成小写),不过如果你的XML里Name的大小写是固定的,这个可能不需要。 - 记得加错误处理哦!比如如果
SelectNodes返回的集合为空,Item(0)会报错,可以先判断集合的Length是否大于0再取文本。
内容的提问来源于stack exchange,提问作者DGIorio
相关产品推荐
相关产品推荐

