Android中既支持pull解析也支持sax解析,本篇帖子讲android中的pull解析。
PULL的解析方式与SAX解析类似,都是基于事件的模式。不同的是,在PULL解析过程中返回的是数字,且我们需要自己获取产生的事件然后做相应的操作,而不像SAX那样由处理器触发一种事件的方法,执行我们的代码。
系统给我们提供了对应的API供我们使用
try {
//初始化xml解析器
XmlPullParser pullParser = Xml.newPullParser();
File file = new File("test.xml");
InputStream inputStream = new FileInputStream(file);
//指定以什么格式解析
pullParser.setInput(inputStream,"utf-8");
//获取事件类型
int eventType = pullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT){
//根据事件类型进行具体的操作
switch (eventType){
case XmlPullParser.START_DOCUMENT: //开始解析文档
break;
case XmlPullParser.START_TAG: //解析到开始标签
String name = pullParser.getName();//获取标签名称
pullParser.getAttributeValue()//获取标签属性
String text = pullParser.nextText();//获取标签中的文本,千万不要用pullParser.getText();
break;
case XmlPullParser.END_TAG: // 解析到结束标签
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
如果Android中XmlPullParser解析XML文档的方式类似sax,我不明白的是Android中提供的解析器名称为什么叫XmlPullParser?
网友评论