如何用Wiremock实现XPath或正则表达式多值OR文本包含匹配
XPath多值OR包含匹配配置方案
需求:针对以下XML请求体,实现匹配逻辑——只要<name>标签的文本包含David、Jack或Mike其中任意一个即可,忽略其他元素/标签。
目标XML请求体:
<person_obj> <params> <name>David J</name> <loca>NY</loca> </params> </person_obj>
你尝试的配置存在语法错误(matchesXPath后缺少冒号),且部分工具对or数组的支持有限,这里提供两种可行方案:
方案一:直接在XPath表达式中整合OR逻辑
把多个包含判断直接写在XPath里,语法简洁且兼容性更好:
"bodyPatterns": [ { "ignoreArrayOrder": true, "ignoreExtraElements": true, "matchesXPath": { "expression": "//person_obj/params/name[contains(text(), 'David') or contains(text(), 'Mike') or contains(text(), 'Jack')]" } } ]
这个XPath会直接定位到满足"文本包含David/Mike/Jack任意一个"的<name>节点,只要存在该节点即匹配成功。
方案二:修正配置语法,使用多条件OR数组
如果你的工具支持or数组配置,先补全语法错误(matchesXPath后加冒号),配置如下:
"bodyPatterns": [ { "ignoreArrayOrder": true, "ignoreExtraElements": true, "matchesXPath": { "expression": "//person_obj/params/name/text()", "or": [ {"contains": "David"}, {"contains": "Mike"}, {"contains": "Jack"} ] } } ]
注:部分工具对or数组的规则有特殊要求,方案一的通用性更强。
内容的提问来源于stack exchange,提问作者Divya
相关产品推荐
相关产品推荐

