XMLUnit - Xml文件缩进会影响比较

时间:2011-03-09 16:05:08

标签: java xml xml-serialization jaxb xmlunit

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

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

以下是XMLUnit生成的错误消息:

  

[不同]预期的孩子数量   节点'3'但是'1'

你们有什么想法解决这个问题吗? 也许解决方案是生成一个漂亮的候选版本,在这种情况下你有想法将它与JAXB序列化器结合起来吗?

顺便说一句,如果你现在用Java比较好的XML文件解决方案,我会很高兴知道它;)

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:20)

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

在您的情况下,您可能想要:

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

您可能还会发现setIgnoredAttributeOrder属性也很有用。

答案 1 :(得分:0)

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