java - Wiremock 和 XPath 属性测试

标签 java xml xpath wiremock

假设我有一个包含以下代码片段的 XML 请求

<foo bar="12356"/>

我的服务将此代码段发送到另一个服务来执行操作。该服务需要一个带有 bar 属性但没有文本节点的 foo 节点。以下表达式可以很好地匹配该节点

//foo[@bar='12356']

问题是 Wiremock 期望匹配的 foo 节点中存在文本节点,因此,它认为前面的表达式不匹配。

如何使用wiremock 测试XML 来匹配属性而不是文本节点?

最佳答案

根据 XPath 规范,命名空间很重要。如果 xml 文件如下

<?xml ...>
<Envelope>
    <foo bar="12356"/>
</Envelope>

然后所提供的 XPath 表达式就可以工作了。但是一旦添加 xmlns= 声明,您的节点就不再是 foo 而是 "[xmlns]":foo。因此,//foo 仅匹配无前缀的 foo 元素。

关于java - Wiremock 和 XPath 属性测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58382631/

相关文章:

java - Netbeans IDE 不发出有关在构造函数中调用的方法的警告

java - 如何传递 `Class<T>` 的 `List<MyDevice>` ?

java - 在替换之前如何对replaceAll中的正则表达式部分进行计算?

sql-server - 验证 xml 节点是否具有给定值 sql 的子节点

xpath - 具有分层匹配的XPath

java - 如何在不使用 Integer 类的情况下在 Java 中获取 Integer.MAX_VALUE 的值

c# - 将 XmlNodeList 转换为 XmlNode[]

java - 使用同名节点的 Android/Java XML 解析

java - 如何使用 selenium xpath 等待页面中的两个元素之一

xslt - 比较XPath中的属性值