2011-03-09 64 views
14

我目前正在嘗試使用XMLUnit庫來比較兩個XML文件。 其中之一,候選,由我的代碼從Java對象(使用JAXB)生成,另一個是參考(我無法修改它)。 基本上我試圖證明給定一個參考XML文件,我可以反序列化它(使用Jaxb和我自己的一些類),然後將其序列化回另一個文件,並且仍然具有相同的內容。XMLUnit - Xml文件縮進影響比較

該庫似乎提供了我需要的服務,但是當生成的文件沒有正確縮進(以「漂亮打印」版本的種類)時,比較失敗,並且在縮進確定時不會進行比較。 例如,當生成候選時,不存在縮進,則該內容是單行的,如果縮放正確(手動),則比較確定。

下面是XMLUnit測試所產生的錯誤信息:

[不同]預計數子的 節點「3」,但爲「1」

。你們有什麼想法解決這個? 也許解決方案是生成候選版本的漂亮版本,在這種情況下,您是否有想過將它與JAXB串行器結合起來?

通過,如果你現在在Java中更好的解決方案來比較XML文件,我會很高興知道它的方式;)

在此先感謝您的幫助。

回答

19

通過設置org.custommonkey.xmlunit.XMLUnit類的屬性,可以放寬XMLUnit在與樹進行比較時使用的一些約束。

在你的情況,你可能想:

XMLUnit.setIgnoreComments(true); 
XMLUnit.setIgnoreWhitespace(true); 
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true); 

您也可以找到setIgnoredAttributeOrder財產有幫助。

+0

非常感謝!這解決了我的問題。 – 2013-12-02 14:51:57

0

有關如何使用XMLUnit 2.x執行此操作,請參閱我的回答here以解決類似的問題。