使用XmlResourceParser解析xml

Android 中解析xml的方式有四种:DOM、SAX、Pull(使用的是XmlPullParser类进行解析)以及自己提供的XmlResourceParser(这里不确定XmlResourceParser属不属于Pull的一种,所以单独列出来)。

使用方式:

XmlPullParser :

        XmlPullParser xmlPullParser = Xml.newPullParser();
        InputStream is = null;
        try {
            is = context.getResources().getAssets().open("emoji_properties.xml") ;
            //2.设置XmlPullParser的参数
            xmlPullParser.setInput(is,"utf-8");
            eventType = xmlPullParser.getEventType();

  ...

catch(Exception e){

e.printStackTrace();

}finally {

            if (null != is){
                try {
                    is.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }


  XmlResourceParser:

 XmlResourceParser xmlResourceParser =  context.getResources().getXml(R.xml.emoji_properties);
        try {
            eventType = xmlResourceParser.getEventType();

}catch(Exception e){

  e.printStackTrace();

}finally{

xmlResourceParser.close();

}

注:省略的部分,两者代码一致

Android中的布局文件就是使用XmlResourceParser 进行解析的,而且写法也简便很多,

大部分情况下是可以使用的。但是当xml文件中包含特殊字符时需要酌情使用,

比如当其中包含单引号时会导致解析失败,例如: /::'( 会被解析成 /::

这个问题不是一定的,比如我的测试代码和项目中的代码连同配置文件的版本都一致,

但测试代码好使,项目就是不好使,

还望知道原因的留言告知。

所以酌情使用...

猜你喜欢

转载自blog.csdn.net/Mr_Tony/article/details/78589052
今日推荐