【问题标题】:Are there any alternatives to XmlUnit?XmlUnit 有什么替代品吗?
【发布时间】:2023-03-07 03:30:01
【问题描述】:

我需要区分包含生成的 .xml 和 .wsdl 文件的大型目录结构。生成的 .xml 文件在子元素出现的顺序上有所不同。 XmlUnit Diff.similar() 方法应该可以处理这种情况:

'如果两个文档包含相同的元素和属性而不考虑顺序,则认为它们是“相似的”。'

然而,情况并非如此。我拿了一个 .xml 文件,颠倒了两个子元素的顺序,XmlUnit 说它们不相似。

XmlUnit 已损坏,仅提供内置 diff 实用程序的功能。

是否有替代 XmlUnit 的方法来识别 .xml 文件中的简单差异,例如子元素的排序?

【问题讨论】:

  • 如果您需要帮助,您将不得不编辑您的帖子以包括 (a) 显示您如何实例化 Diff 和调用 Diff.similar() 的代码,以及 (b)演示您认为不正确的输出的 XML。

标签: xml xmlunit


【解决方案1】:

我有一个类似的问题,在我的情况下,我有几个标签名称相同,但属性不同(顺序无关紧要),但 XmlUnit 总是先检查第一个,第二个检查第二个......被交换。我的问题是:

Comparing similar xml files with XmlUnit with unordered tags (same tag name with different attributes)

我在这里找到了解决方案:

http://www.infoq.com/articles/xml-unit-test

在我的情况下,只需覆盖元素限定符即可解决:

    Diff diff = new Diff(controlXml, responseXml);
    diff.overrideElementQualifier(new ElementNameAndAttributeQualifier());

【讨论】:

    【解决方案2】:

    我发现设置以下选项解决了不准确(不)相似性的问题:

    XMLUnit.setIgnoreWhitespace(true);
    

    【讨论】:

    • 这是我在使用 XMLUnit 时遇到的主要问题之一,静态设置会导致用户相互影响。我宁愿在 Diff 对象上看到这些调用。
    【解决方案3】:

    我同意吉姆的评论。我在使用 XmlUnit 时遇到的大多数问题都是由于初始化不正确造成的。

    但是,如果您觉得实现没有满足您的需要,您可以随时查看 XMLUnit 源代码并用您自己的 Diff 处理程序替换。代码很容易理解,您将能够完全控制行为,而无需付出太多努力来实现自己的差异引擎。

    【讨论】:

      【解决方案4】:

      最好先对 XML 进行排序,在与 xmlunit 进行比较之前,不要使用 xmlunit 排序自己编写,这比根据需要配置 xmlunit 容易得多

      【讨论】:

        【解决方案5】:

        你试过XUnit吗?

        【讨论】:

          猜你喜欢
          • 2020-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-10
          • 1970-01-01
          • 1970-01-01
          • 2010-12-13
          • 2023-03-08
          相关资源
          最近更新 更多