java - Wiremock 和 XPath 属性测试
问题描述
假设我有一个包含以下代码段的 XML 请求
<foo bar="12356"/>
我的服务将此代码段发送到另一个服务以执行操作。该服务需要一个foo
具有bar
属性且没有文本节点的节点。以下表达式与该节点匹配得很好
//foo[@bar='12356']
问题是 Wiremock 期望文本节点出现在匹配的foo
节点中,因此,它认为前面的表达式不匹配。
使用wiremock 如何测试XML 匹配属性而不是文本节点?
解决方案
根据 XPath 规范,命名空间很重要。如果 xml 文件如下
<?xml ...>
<Envelope>
<foo bar="12356"/>
</Envelope>
然后提供的 XPath 表达式会起作用。但是一旦你添加了声明,你的节点就xmlns=
不再是. 结果,只匹配无前缀的元素。foo
"[xmlns]":foo
//foo
foo
推荐阅读
- c# - 帧窗口与系列的性能问题
- c++ - 来自原始像素数据的 C++ win32 BITMAP 对象
- python - 如何创建嵌套的张量流结构?
- excel - VBA 从函数返回字典
- excel - 当所有参数都指定且非空时,为什么我会收到编译错误 Argument not optional?
- c# - 使用 json.net 反序列化 json 对象数组
- java - JIT C2 方法最大尺寸
- sql-server - 参数超出范围参数名称索引
- node.js - 场景设置为“incomingCall”的 Windows 10 Toast 通知扰乱了通知 UI
- zip - 在压缩输入上使用 ConvertRecord