1

我正在使用 xmlunit 来比较两个文本文件。控制xml是:

<books>
    <book>
       <name>Angels &amp; Demons</name>
       <isbn>9971-5-0210-0</isbn>
       <author>Dan Brown</author>
       <category></category>
    </book>
</books>

我将它与另一块交换了 and 元素的 xml 进行比较。

<books>
    <book>
        <isbn>9971-5-0210-0</isbn>
        <name>Angels &amp; Demons</name>
        <author>Dan Brown</author>
        <category></category>
    </book>
</books>

Diff 对象报告以下差异:

Expected sequence of child nodes '1' but was '3' - comparing <name...> at /books[1]/book[1]/name[1] to <name...> at /books[1]/book[1]/name[1]

如果<name>是子节点'1',不会<isbn>是子节点'2'吗?

4

2 回答 2

1

对于 xmlUnit 2.X 版本:

对于 xmlUnit 2.xx 版本,XMLUnit.setIgnoreWhitespace(true) 不再适用。现在,您可以通过添加 DiffBuilder.ignoreWhitespace() 将“忽略空格”直接添加到 DiffBuilder。

Diff diffXml =DiffBuilder.compare(expectedXml).withTest(actualXml).normalizeWhitespace().checkForSimilar().build();

对于断言 xmls 是相似的,你可以例如。做:

   MatcherAssert.assertThat(diffXml.toString(), is("[identical]"));

有关 1.x 到 2.x 之间更改的更多信息,请参阅: https ://github.com/xmlunit/user-guide/wiki/Migrating-from-XMLUnit-1.x-to-2.x

于 2016-02-19T07:48:20.950 回答
0

似乎 XmlUnit 将 xml 中的回车计数为子节点。设置以下 XMLUnit.setIgnoreWhitespace(true); 给出了预期的子节点序列“0”但为“1”的更直观的结果 - 比较<int...> at /struct[1]/int[1] to <int...> at /struct[1]/int[1]

于 2013-05-22T14:11:36.083 回答