我正在寫一個函數,我將用於我的單元測試。我想比較XML文件,但是由於其中一個將由第三方庫創建,因此我想通過縮進來緩解任何可能的差異。因此我寫了如下函數:刪除xml文件的縮進
private String normalizeXML(String xmlString) {
String res = xmlString.replaceAll("[ \t]+", " ");
// leading whitespaces are inconsistent in the resulting xmls.
res = res.replaceAll("^\\s+", "");
return res.trim();
}
但是這個函數並沒有刪除XML每一行的前導間隔。
當我寫在這種方式的功能(在第一正則表達式的差):
private String normalizeXMLs(String xmlString) {
String res = xmlString.replaceAll("\\s+", " ");
// leading whitespaces are inconsistent in the resulting xmls.
res = res.replaceAll("^\\s+", "");
return res.trim();
}
它刪除尾部的空白,但它也使在xml顯示爲單條線,這是非常麻煩的當你需要比較差異。
我只是不能證明爲什麼第一個實現不會取代領先區間。有任何想法嗎?
編輯:更有意思的是,如果我做一個單行操作:
String res = xmlString.replaceAll("^\\s+", "");
該行不會刪除任何identation的!
一個問題,此方法的缺點是可能會移除空白,實際上是顯著。換行符和空格可以作爲標籤文本內的值顯示。 – Newtopian 2016-08-26 16:44:35