您的位置:首页 > 移动开发 > Android开发

掌间无限—Android 解析gbk、gb2312编码的xml文件

2011-09-26 09:38 483 查看
        工作开发中,我们遇到的XML文件大多数都是UTF—8格式的文件,可一旦遇到不是UTF—8的XML文件,我们该怎么去解析?android默认的有三种解决方式:,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文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息