当前位置: 首页 > 知识库问答 >
问题:

Java XMLUnit比较不同信息排序的XML文件

鞠建安
2023-03-14

我正在尝试验证和检查两个XML文件之间的差异。

XML文件1:

<Customer .....>
    <Description description="Foo" name="Foo" language="svSE"/>
    <Description description="Bar" name="Bar" language="enUS"/>
</Customer>
<Customer .....>
    <Description description="Bar" name="Bar" language="enUS"/>
    <Description description="Foo" name="Foo" language="svSe"/>
</Customer>
public class FooTest extends AbstractTest {

    ...

    @Test
    public void assertFooBarFile() {

        ...

        XMLUnit.setIgnoreComments(Boolean.TRUE);
        XMLUnit.setIgnoreWhitespace(Boolean.TRUE);
        XMLUnit.setNormalizeWhitespace(Boolean.TRUE);
        XMLUnit.setIgnoreDiffBetweenTextAndCDATA(Boolean.TRUE);
        XMLUnit.setIgnoreAttributeOrder(Boolean.TRUE);
        XMLAssert.assertXMLEqual(doc1, doc2);
    }
}

我应该如何比较这两个文件包含相同的信息(不关心信息的生成顺序),有什么想法吗?

共有1个答案

燕嘉颖
2023-03-14

你可以试试这个。

public static boolean compareXMLs(String xmlSource, String xmlCompareWith)
        throws Exception {
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreAttributeOrder(true);

XMLUnit.setNormalizeWhitespace(true);

Diff myDiff = new Diff(xmlSource, xmlCompareWith);
myDiff.similar()
}

测试

String x1 = "<a><a1/><b1/></a>";
String x2 = "<a><b1/><a1/></a>";
assertTrue(compareXMLs(x1, x2));
 类似资料:
  • “StringComparator”在“arrays.sort(b,new StringComparator());”出货量和预期的一样。 但当我使用默认排序(步骤如下),然后按“StringComparator”排序时,bug显示: “Arrays.Sort(a);Arrays.Sort(a,new StringComparator());”

  • 我在网上找不到如何比较文件之间的单词的任何例子。我需要确定文件之间共享的字数和每个文件(相对于其他文件)唯一的字数。我的最终输出应该包括7个数字:文件1和文件2的总字数,文件1和文件2的唯一字数,文件1和文件2之间共享的字的#,文件1中但不在文件2中的字的#,以及文件2中但不在文件1中的字的#。我知道我必须使用set()来完成此操作,但我不明白如何操作。 期望输出:

  • 我有两个列表,数据相同,但顺序不同。 结果:

  • 我也可以使用相同的比较器按Id对列表进行排序吗?

  • 我的列表中有这样一个< code>compareTo代码: 当我使用时,我得到以下错误: 当我将其更改为<code>if(this.long1 现在,重复确实发生了,需要正确排序。重复项是出现在第一个还是最后一个并不重要,只要它们按顺序正确分组,如下所示: 我该如何正确地做到这一点?谢谢你。 更新 该列表仍在按以下所有建议排序。这是因为它是一个

  • 我有一个程序可以对计算机的某个目录中的文件进行排序。我正在使用比较器接口和Collections.Sort-方法,但我无法访问调用类的输出。我也不知道如何在Sort-class中对对象进行排序。 1)如果有人能告诉我如何使用compare-method(prototyp是:sort(List List,Comparator c)我会很高兴