我遇到两种不同的webservice方法应该返回完全相同的XML文件的情况。
现在,当我得到这两个响应时,我使用XMLUnit框架比较这些XML文件,该框架显示了xpath位置+各个节点中的差异,如下面的代码所示:
XMLUnit.setIgnoreWhitespace(true);
DetailedDiff diff = new DetailedDiff(XMLUnit.compareXML(firstXML,secondXML));
List<Difference> allDiifferences= diff.getAllDifferences();
for(Difference difference : allDiifferences){
System.out.println(difference.getControlNodeDetail().getXpathLocation()+" ("+difference.getControlNodeDetail().getValue()+") /("+difference.getTestNodeDetail().getValue()+")");
}
当我在SoapUI中运行测试时,我使用
log.info
log.error
显示XML中存储的差异的方法。
有没有更好的方法来显示这些差异?
答案 0 :(得分:3)
关于这一点,我做了一些R&amp; D,这是我可以告诉你的最好的知识。 XMLUnit提供了最稳定,最轻量级的工具,可以有效地找到两个xml文件之间的各种差异。当然,你可以自由选择在发现这些差异后如何显示这些差异。
答案 1 :(得分:1)
XMLUnit适合您的用例。 或者您可以尝试使用JAXB将XML转换为Java对象,然后编写自定义比较器的替代方法。 (JAXB工具可以自动生成DTD中的类)