android xml使用pull解析

xml的三种解析方式:DOM,SAX,和Pull。Android推荐使用pull解析。此篇只适用于简单的xml解析。

xml标签样式:

1.标签里面只有一个值。

kongge

可以用parser.nextText()获得标签里的值.(parser由android.util.Xml创建一个XmlPullParser实例,下同)

2.一个标签里面有几个值。

可以用parser.getAttributeValue(0)获取name的值,parser.getAttributeValue(1)获取age的值,以此类推。

3.同样的标签,里面的属性值个数不等。(像这种多个标签,可以用ArrayList存储起来)

可以用parser.getAttributeCount()获得标签里面的属性值个数,如果等于3,就用parser.getAttributeValue(2)获取sex的值;如果等于2,就不获取sex的值,不然会报异常。

4.同样的标签,里面的属性名称不同。

可以先获取前面两个属性值,当获取第三个时,给个判断即可

if(parser.getAttributeName(2).equals("sex")){

   

}else if(parser.getAttributeName(2).equals("like")){


}


xml:






解析框架

public Item_Model parse(InputStream is) throws Exception{

                Item_Model item = null;
		Param_Model param = null;

		// 由android.util.Xml创建一个XmlPullParser实例
		XmlPullParser parser = Xml.newPullParser();
		        
		// 设置输入流 并指明编码方式
		parser.setInput(is,"GBK");
		        
		//产生第一个事件
		int elementType = parser.getEventType();

		while(elementType != XmlPullParser.END_DOCUMENT){
		            
			switch (elementType) {

			// 判断当前事件是否为文档开始事件
			case XmlPullParser.START_DOCUMENT:

				break;

			// 判断当前事件是否为标签开始事件
			case XmlPullParser.START_TAG:
				if (parser.getName().equals("item")){
					//实例化item实体类,获取并设置各个属性
					//item = new Item_Model();
					//item.setName(parser.getAttributeValue(0));
				}else if(parser.getName().equals("param"))
					//param = new Param_Model;
					//…………
				}
				break;

			// 判断当前事件是否为标签结束事件
			case XmlPullParser.END_TAG:
				if (parser.getName().equals("item")){
					//将实体类加入上一级标签
					
				}else if(parser.getName().equals("param"))
					//将实体类加入上一级标签
					//item.setParam(param);
				}
				break;
			default:
				break;
			}
			// 进入下一个元素并触发相应事件
			elementType = parser.next();
		}
		//此时得到的item实体存储的就是解析后的结果,一般把这个结果作为一个函数的返回值。
                return item;
}


大致思路就是这样。






你可能感兴趣的:(android)