2011-03-09 62 views
14

我目前正在尝试使用XMLUnit库来比较两个XML文件。 其中之一,候选,由我的代码从Java对象(使用JAXB)生成,另一个是参考(我无法修改它)。 基本上我试图证明给定一个参考XML文件,我可以反序列化它(使用Jaxb和我自己的一些类),然后将其序列化回另一个文件,并且仍然具有相同的内容。XMLUnit - Xml文件缩进影响比较

该库似乎提供了我需要的服务,但是当生成的文件没有正确缩进(以“漂亮打印”版本的种类)时,比较失败,并且在缩进确定时不会进行比较。 例如,当生成候选时,不存在缩进,则该内容是单行的,如果缩放正确(手动),则比较确定。

下面是XMLUnit测试所产生的错误信息:

[不同]预计数子的 节点“3”,但为“1”

。你们有什么想法解决这个? 也许解决方案是生成候选版本的漂亮版本,在这种情况下,您是否有想过将它与JAXB串行器结合起来?

通过,如果你现在在Java中更好的解决方案来比较XML文件,我会很高兴知道它的方式;)

在此先感谢您的帮助。

回答

19

通过设置org.custommonkey.xmlunit.XMLUnit类的属性,可以放宽XMLUnit在与树进行比较时使用的一些约束。

在你的情况,你可能想:

XMLUnit.setIgnoreComments(true); 
XMLUnit.setIgnoreWhitespace(true); 
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true); 

您也可以找到setIgnoredAttributeOrder财产有帮助。

+0

非常感谢!这解决了我的问题。 – 2013-12-02 14:51:57

0

有关如何使用XMLUnit 2.x执行此操作,请参阅我的回答here以解决类似的问题。