在Java中比较2个XML文档的最佳方法

我正在尝试编写一个应用程序的自动测试,该应用程序基本上将自定义消息格式转换为XML消息,并将其发送到另一端。我有一组很好的输入/输出消息对,所以我所需要做的就是发送输入消息,并侦听XML消息从另一端出来

当需要比较实际输出和预期输出时,我遇到了一些问题。我的第一个想法就是对预期消息和实际消息进行字符串比较。这样做效果不太好,因为我们的示例数据的格式并不总是一致的,而且XML名称空间经常使用不同的别名(有时根本不使用名称空间)

我知道我可以解析两个字符串,然后自己遍历每个元素并比较它们,这不会太困难,但我觉得有更好的方法或库可以利用

因此,归结起来,问题是:

给定两个都包含有效XML的Java字符串,如何确定它们在语义上是否等价?如果您有办法确定差异是什么,则可获得额外积分

听起来像是XMLUnit的工作

  • http://www.xmlunit.org/
  • https://github.com/xmlunit

例如:

公共类SomeTest扩展了XMLTestCase{
@试验
公开无效测试(){
字符串xml1=。。。
字符串xml2=。。。
setIgnoreWhitespace(true);//忽略空格差异
//还可以比较xml文档、输入源、读取器和差异
assertXMLEquals(xml1,xml2);//assertXMLEquals来自XMLTestCase
}
}

发表评论