我需要区分包含生成的.xml和.wsdl文件的大型目录结构。生成的.xml文件按子元素的显示顺序不同。 XmlUnit Diff.similar()方法应该处理这种情况:
'如果两个文件包含相同的元素和属性,则无论顺序如何,都被认为是“相似的”。
但是,情况并非如此。我拿了一个.xml文件,颠倒了两个子元素的顺序,而XmlUnit说它们不相似。XmlUnit已损坏,不提供比内置diff实用程序更多的功能。
是否有XmlUnit的替代品可以识别.xml文件中的简单差异,例如子元素的排序?
答案 0 :(得分:5)
我有一个类似的问题,在我的情况下,我有几个同名的标签,但不同的属性(顺序无关紧要),但XmlUnit始终先检查第一,第二,第二......这可能被交换。我的问题是:
我在这里找到了一个解决方案:
http://www.infoq.com/articles/xml-unit-test
就我而言,它只是覆盖了元素限定符:
Diff diff = new Diff(controlXml, responseXml);
diff.overrideElementQualifier(new ElementNameAndAttributeQualifier());
答案 1 :(得分:3)
我发现设置以下选项解决了不准确(非)相似性的问题:
XMLUnit.setIgnoreWhitespace(true);
答案 2 :(得分:1)
我同意吉姆的评论。我在XmlUnit中面临的大多数问题都是由于初始化不正确造成的。
但是,您可以随时查看XMLUnit源代码,如果您认为实现没有按照您的需要进行操作,请将Diff处理程序替换为您自己的源代码。代码很容易理解,您将能够完全控制行为,而无需花费太多精力来实现自己的diff引擎。
答案 3 :(得分:1)
最好对XML进行排序,然后再将其与xmlunit进行比较,而不是使用xmlunit排序编写自己的,这比根据需要配置xmlunit要容易得多
答案 4 :(得分:0)
你试过XUnit吗?