XmlUnit和子节点

时间:2013-05-22 02:24:48

标签: xml xmlunit

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

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

我正在将这个与另一个具有和交换元素的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'吗?

2 个答案:

答案 0 :(得分:1)

适用于xmlUnit 2.X版本:

对于xmlUnit 2.xx版本,XMLUnit.setIgnoreWhitespace(true)不再适用。现在,您可以添加&#34;忽略空格&#34;通过添加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

答案 1 :(得分:0)

似乎XmlUnit正在计算xml中的回车作为子节点。设置以下XMLUnit.setIgnoreWhitespace(true);给出了一个更直观的结果,即子节点'0'的预期序列,但是'1' - 比较<int...> at /struct[1]/int[1] to <int...> at /struct[1]/int[1]