2016-02-24 36 views
0

我有兩個XML文件是這樣的:XMLUnit測試顯示添加或刪除節點

<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 

回答

0

添加和刪除節點是一種特殊類型的差異。所以你需要使用一種給你所有區別的方法。如果使用XMLUnit 1.x,這意味着使用DetailedDiffgetAllDifferences - 如果使用XMLUnit 2.x,這意味着查看DiffgetDifferences,最可能的是DiffBuilder

XMLUnit將標記與控件或測試節點詳細信息爲null在1.x中的類型CHILD_NODE_NOT_FOUND_ID和2.x中的CHILD_LOOKUP的差異。如果測試詳細信息是null,該節點已被刪除。如果控制細節是null它已被添加。

使用XMLUnit 1.x時,確保設置爲XMLUnit.setCompareUnmatched(false),否則您可能根本沒有收到任何CHILD_NODE_NOT_FOUND差異。

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

+0

這隻測試兩個xml文件是否相同。但是我想讓XMLUnit向我展示兩個文件之間的區別。特別是我想知道哪些節點添加或刪除。 – Kevin

+0

更新答案 - 希望有所幫助。 –