关于比较 XML 的方法的建议(而不是将正则表达式与 Java 的字符串 replaceAll 一起使用)
Suggestion on approach to compare XMLs (instead of using regex with Java's String replaceAll)
我正在编写一个测试实用程序,打算用来创建到主应用程序的人工流量(一个 Spring 基于集成的应用程序,在基于 JMS 和 SOAP 服务的下游和上游都有入口点) .
除了创建流量之外,我还希望能够判断应用程序是否正确响应(即采用 XML 并与预定的预期值进行比较)。我有针对不同类型响应的基础 XMLs,但是有一些动态值基于我需要操纵的情况,以便能够与基础源进行比较以进行比较。
解决它的一种方法:使用 String
Java class 的 replaceAll 方法,我根据需要对源和目标 XML 进行逻辑操作我可以确定响应是否有效的点。
我很想知道是否有任何 XML 实用程序框架可以提供一组更高级的功能来实现这一目标?
非常感谢
您可以为您的 xml 生成 jaxb 类,解组它,然后检查感兴趣的属性。您可能已经将这些 类 作为 JMS 和 WS 逻辑的 dom 对象,因此它们可能只需要在顶部添加 @XMLRoot 注释。
为了更接近 xml,您可以使用 XPath 提取您期望的动态位。
使用 XSLT 转换进行 "replace" 规范化,然后使用 XPath 2.0 deep-equal() 函数(可能在同一转换中)与参考结果进行比较。这启用了适当的 XML 比较语义,例如忽略无关紧要的空格或任意区别,例如单引号与双引号。
我正在编写一个测试实用程序,打算用来创建到主应用程序的人工流量(一个 Spring 基于集成的应用程序,在基于 JMS 和 SOAP 服务的下游和上游都有入口点) .
除了创建流量之外,我还希望能够判断应用程序是否正确响应(即采用 XML 并与预定的预期值进行比较)。我有针对不同类型响应的基础 XMLs,但是有一些动态值基于我需要操纵的情况,以便能够与基础源进行比较以进行比较。
解决它的一种方法:使用 String
Java class 的 replaceAll 方法,我根据需要对源和目标 XML 进行逻辑操作我可以确定响应是否有效的点。
我很想知道是否有任何 XML 实用程序框架可以提供一组更高级的功能来实现这一目标?
非常感谢
您可以为您的 xml 生成 jaxb 类,解组它,然后检查感兴趣的属性。您可能已经将这些 类 作为 JMS 和 WS 逻辑的 dom 对象,因此它们可能只需要在顶部添加 @XMLRoot 注释。
为了更接近 xml,您可以使用 XPath 提取您期望的动态位。
使用 XSLT 转换进行 "replace" 规范化,然后使用 XPath 2.0 deep-equal() 函数(可能在同一转换中)与参考结果进行比较。这启用了适当的 XML 比较语义,例如忽略无关紧要的空格或任意区别,例如单引号与双引号。