java - XMLUnit - Xml 文件缩进对比较的影响

标签 java xml xml-serialization jaxb xmlunit

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

该库似乎提供了我需要的服务,但是当生成的文件没有正确缩进(类似于“ pretty-print ”版本)时,比较失败,而当缩进正常时也不会。 例如生成candidate时没有缩进,内容是一行的,如果正确(手动)缩进,比较就可以了。

这是 XMLUnit 生成的错误消息:

[different] Expected number of child nodes '3' but was '1'

你们有解决这个问题的想法吗? 也许解决方案是生成一个 pretty-print 版本的候选,在这种情况下,您有没有想过将它与 JAXB 序列化程序结合起来?

顺便说一下,如果您现在有更好的 Java 解决方案来比较 XML 文件,我会很高兴知道它;)

预先感谢您的帮助。

最佳答案

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

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

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

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

关于java - XMLUnit - Xml 文件缩进对比较的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248517/

相关文章:

c# - 使用 Linq 读取 XML 文档

objective-c - NSDictionary 到 ios 中的 xml 字符串转换

C# 将 XML 混合内容中的文本反序列化为自定义对象?

java - 如何将 url 重定向到 web.xml 中的 jsp

java - Android SDK - Java - listview.setAdapter 失败

java - Java 中的 HDF5 : What are the difference between the availabe APIs?

java - 在不同进程中的两个 Activity 之间传递数据

javascript - 使用 JavaScript XHR 列出服务器目录

java - 简单的 HTML(或 XML)到 Android Native 转换器

xml - JAXB - 仅为元素的特定子类型设置 XmlAdapter?