Android 解析gbk、gb2312編碼的xml文件(轉)

Android 支持三種解析xml文件的方式,dom,sax,pull,我用的比較多的是sax解析,但發現sax默認只解析utf-8編碼的xml文件; 
經過網上搜索,最終找到了解決辦法: 
1.就是先判斷URL資源上的xml文件的編碼方式 
2.而後經過InputStreamReader 設定好編碼,而後將InputStreamReader經過InputSource的構造方法傳給InputSource 
3.sax解析InputSource資源時,就會按照指定的編碼方式解析 

1.判斷url資源上的xml文件編碼方式,須要經過第三方的jar文件 
//獲得探測器代理對象 
CodepageDetectorProxy detector =   CodepageDetectorProxy.getInstance(); 
//向代理對象添加探測器 
detector.add(JChardetFacade.getInstance());   
//獲得編碼字符集對象 
Charset charset =  detector.detectCodepage(url); 
//獲得編碼名稱 
String encodingName = charset.name(); 

2.經過InputStreamReader對象設定解析時的編碼 
InputSource inputSource=null; 
InputStream stream = null; 

  //若是是GBK編碼 
   if("GBK".equals(EncodingUtil.checkEncoding(url))){ 
    stream = url.openStream(); 
    //經過InputStreamReader設定編碼方式 
    InputStreamReader streamReader = new InputStreamReader(stream,"GBK"); 
    inputSource = new InputSource(streamReader); 
   }else{ 
    //是utf-8編碼 
    inputSource = new InputSource(url.openStream()); 
    inputSource.setEncoding("UTF-8"); 
   } 

3.使用sax解析InputSource對象 
ChinaNews chinaNews = SAXRssService.readRssXml(inputSource); 
newsItems=chinaNews.getNewsItems(); 

經過以上三步就能夠解析gbk或者gb2312編碼的xml文件,將網絡上的rss資源文件解析後,用ListView顯示出來,就成了一個簡單的rss閱讀器 
網絡

相關文章
相關標籤/搜索