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

ree*_*eef 15 java xml jaxb xml-serialization xmlunit

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

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

这是XMLUnit生成的错误消息:

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

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

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

在此先感谢您的帮助.

Oph*_*ian 20

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

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

XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);
Run Code Online (Sandbox Code Playgroud)

您可能还会发现该setIgnoredAttributeOrder物业也很有用.