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文件中包含特殊字符时需要酌情使用,比如当其中包含单引号时会导致解析失败,例如: /::'( 会被解析成 /::
这个问题不是一定的,比如我的测试代码和项目中的代码连同配置文件的版本都一致,但测试代码好使,项目就是不好使,
还望知道原因的留言告知。
所以酌情使用...
原文链接:https://www.f2er.com/xml/293617.html