0
JDK 1.7.0 XMLUnit測試1.3使用XMLUnit(Java)來比較兩種含實體XML字符串
當比較該控制XML字符串:
String controlXml = "" +
"<client>" +
" <name>Hello World</name>" +
"</client>";
有了這個測試XML字符串:
String testXml = "" +
"<client>" +
" <name>Hello World</name>" +
"</client>";
XMLUNIT返回false,我期待它返回true(沒有差異)。
這裏是我的用法:
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreWhitespace(true);
Diff diff = new Diff(controlXml,testXml);
boolean result = diff.similar(); //result is false
我也得到在控制檯窗口中出現以下錯誤:
[Fatal Error] :1:103: The entity "nbsp" was referenced, but not declared.
我不知道這裏做什麼。
我看着它,並且使用Google瞭解了關於EntityResolver的一些信息,但它都很混亂。
我需要將實體視爲純文本。在邏輯上,作爲純文本,它們是平等的。
我試着用下面的選項切換:
XMLUnit.setExpandEntityReferences(false); //tried true, false
XMLUnit.setIgnoreDiffBetweenTextAndCDATA(false); //tried true, false
毫無效果。 請幫忙,我完全失去了。謝謝!
看來,有字符實體( )和數值實體( )之間的差異。 對於數字實體而言,XMLUnit沒有與字符實體相對的問題。 我在想,一個簡單的字符實體到數字實體過程應該足以解決我的問題。 – TchiYuan
好吧,' '不是XML處理器會識別的東西,除非它被明確聲明。在XML中,只有五個[預定義](http://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent)實體;另一方面,HTML有大約250個。 –