XMLUnit显示添加或删除的节点

时间:2016-02-24 15:39:20

标签: java xml xmlunit

我有两个这样的xml文件:

<personlist>
    <person>
        <name>Test</name>
    </person>
    <person>
        <name>Test2</name>
    </person>
</personlist>

和这个

<personlist>
    <person>
        <name>Test</name>
    </person>
</personlist>

我知道想要使用XMLUnit来区分这两个xml文件。 有没有XMLUnit向我展示添加或删除节点的方法? 如果我比较我想要的结果的xml文件:

1 person node removed

2 个答案:

答案 0 :(得分:0)

这种方法怎么样?

public class DifferenceinXMLTest extends XMLTestCase {
  @Test
  public void test() {
    final String xml1 = ""
    final String xml2 = ""
    XMLUnit.setIgnoreWhitespace(true); // ignore whitespace differences
    assertXMLEquals(xml1, xml2);  // assertXMLEquals comes from XMLTestCase
  }
}

要获取列表,您可以使用detaileddiff类。

一些例子 - http://www.programcreek.com/java-api-examples/index.php?api=org.custommonkey.xmlunit.DetailedDiff

http://xmlunit.sourceforge.net/example.html

答案 1 :(得分:0)

添加和删除节点是一种特殊的差异。因此,您需要使用一种方法来解决所有差异。如果使用XMLUnit 1.x意味着使用On 3-Feb at 21:00 There was 1 attacks On 4-Feb at 08:00 There was 15 attacks On 4-Feb at 10:00 There was 60 attacks DetailedDiff - 如果使用XMLUnit 2.x意味着查看getAllDifferencesDiff,最有可能getDifferences

XMLUnit将标记控件或测试节点详细信息与DiffBuilder的差异,其中1.x中的类型为null,而2.x中的CHILD_NODE_NOT_FOUND_ID。如果测试详细信息为CHILD_LOOKUP,则表示该节点已被删除。如果控件详细信息为null则已添加。

使用XMLUnit 1.x时,请确保设置null,否则您可能根本不会收到XMLUnit.setCompareUnmatched(false)个差异。