在android系统中解析这些xml的方式,是使用pul解析器进行解析的,它和sax解析一样(感觉要比sax简单点),也是采用事件驱动进行解析的,当pull解析器,开始解析之后,我们可以调用它的next()方法,来获取下一个解析事件(就是开始文档,结束文档,开始标签,结束标签),当处于某个元素时可以调用XmlPullParser的getAttributte()方法来获取属性的值,也可调用它的nextText()获取本节点的值。
实现于activity中:
//针对Pull解析
public List<Map<String,String>> getPullData(){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
XmlResourceParser xrp = getResources().getXml(R.xml.websites);
//直到文档的结尾处
try {
while(xrp.getEventType() != XmlResourceParser.END_DOCUMENT){
//如果遇到开始标签
if(xrp.getEventType() == XmlResourceParser.START_TAG){
String tagName = xrp.getName(); //取得标签名
if(tagName.equals("website")){
Map<String,String> map = new HashMap<String,String>();
String id = xrp.getAttributeValue(null, "id"); //通过属性名获取属性值
map.put("id", id);
String src = xrp.getAttributeValue(1);//通过索引值获取属性值
map.put("src", src);
map.put("name", xrp.nextText());
list.add(map);
}
}
xrp.next(); //解析下一个事件
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}