android SAX解析的characters方法被多次呼叫
android SAX解析,為什麼總是對一個tag執行三次 character()方法
原因是xml檔案中含有\n 和 \t ,解析完想解析的內容之後,後面緊隨的\n 和換行之後縮排帶來的\t 同樣會執行characters方法。
解決辦法: String.replace("\n",""); String.replace("\t","");
以為這樣就可以了,但是還是不行!!!replaceAll也不行!
最終我的解決辦法是去xml檔案把\n 和\t 替換掉,沒有任何多餘字元,就通過了。
但是參照網上內容,有些特殊符號,如&可能也會呼叫新的characters方法,最完美的解決方案是用StringBuilder,解析的時候去呼叫sb.append(*,*,*);然後在endelement方法中把sb強制轉換為String,解決了當前問題。
續:
剛才又找到一個方法,呼叫一個函式
public static String getStringNoBlank(String str) {
if(str!=null && !"".equals(str)) {
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(str);
String strNoBlank = m.replaceAll("");
return strNoBlank;
}else {
return str;
}
}
通過正則表示式把空白的空格符,換行符全部去掉,我沒有在SAX那個程式中執行,但是在System.out中確實把xml檔案的換行神馬的都去掉了。