gpt4 book ai didi

xml - 比较忽略元素顺序的 XML

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:43 32 4
gpt4 key购买 nike

使用 XMLUnit 2 如何在不考虑元素顺序的情况下比较两个文档?

我得到了 this question for XMLUnit 1 , 但显然 v2 中的新 API 不再具有上述方法。

这是我当前的代码:

Diff diff = DiffBuilder.compare(expected)
.withTest(actual)
.ignoreComments()
.ignoreWhitespace()
.checkForSimilar()
.build();

assertFalse(diff.hasDifferences());

编辑 Stefan Bodewigs 评论:

这是我与上面的代码片段比较的两个字符串:

String expected = "<root><foo>FOO</foo><bar>BAR</bar></root>";
String actual = "<root><bar>BAR</bar><foo>FOO</foo></root>";

报告的差异

Expected element tag name 'foo' but was 'bar' - comparing <foo...> at /root[1]/foo[1] to <bar...> at /root[1]/bar[1] (DIFFERENT)
Expected text value 'FOO' but was 'BAR' - comparing <foo ...>FOO</foo> at /root[1]/foo[1]/text()[1] to <bar ...>BAR</bar> at /root[1]/bar[1]/text()[1] (DIFFERENT)
Expected element tag name 'bar' but was 'foo' - comparing <bar...> at /root[1]/bar[1] to <foo...> at /root[1]/foo[1] (DIFFERENT)
Expected text value 'BAR' but was 'FOO' - comparing <bar ...>BAR</bar> at /root[1]/bar[1]/text()[1] to <foo ...>FOO</foo> at /root[1]/foo[1]/text()[1] (DIFFERENT)

最佳答案

在 2.x 文档中可能需要变得更清楚的一个区别是默认的 ElementSelector - 大致是 1.x 中的 ElementQualifier。其中 1.x 默认按名称匹配元素,2.x 默认按顺序匹配元素。也许这是个坏主意。

如果您切换到匹配元素名称,您的 Diff 应该可以工作。


.withNodeMatcher(新的 DefaultNodeMatcher(ElementSelectors.byName))

关于xml - 比较忽略元素顺序的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33695041/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com