2014-07-21 36 views
0

我正在使用JDom 2.0.5來修改xml。我還有一個Junit測試用例,用來檢查它是否被正確修改。它有一個輸入xml,一個測試方法(轉換xml)和一個新的xml(結果)。之後它將輸出與應該是最終結果的文件進行比較。刪除結束標記中的空格jdom

FileUtils.contentEquals(newXml, modelXml); 

但是這總是錯誤的,因爲每個結束標記都被JDom自動修改。我無法更改模型,因爲是不需要修改的要求。

Input: <properties/> 
Output: <properties /> --> should be as input:: <properties/> 

如何避免JDom改變這個標籤?

SAXBuilder builder = new SAXBuilder(); 
Document doc = (Document) builder.build(xmlFile); 

// Add, remove some elements ... 

XMLOutputter xmlOutput = new XMLOutputter(); 
xmlOutput.setFormat(Format.getPrettyFormat()); 
xmlOutput.output(doc, new FileWriter(newXml, false)); 

回答

0

這裏的「改變」實際上是完全有效的。多餘的空間對XML的含義沒有影響。 (或者換句話說,JDom數據結構不會對源標籤中的非重要空白進行編碼,因此,當它格式化輸出XML時,JDom不能再現輸入XML的空白區域。)


真正的問題是,你的期望不正確。您無法可靠地比較XML文檔,就好像它們是字符序列一樣。

閱讀這個問答&一種用於各種正確方式在Java中比較XML: