`
LoveZhou
  • 浏览: 270164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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阅读器
  • 大小: 59.4 KB
  • Rss.rar (934.4 KB)
  • 下载次数: 175
分享到:
评论
3 楼 LoveZhou 2011-02-16  
蓝月儿 写道
现在遇到编码的问题,手机模拟器有自己的默认编码方式吗

模拟器没有
2 楼 蓝月儿 2011-02-16  
现在遇到编码的问题,手机模拟器有自己的默认编码方式吗
1 楼 zhouxiaoli521 2011-01-19  
很不错的工具

相关推荐

Global site tag (gtag.js) - Google Analytics