使用pull方式解析xml文件

原创 2015年11月19日 17:16:15
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<weather>
	<city>
		<name>上海</name>
		<temp>5°</temp>
		<pm>80</pm>
	</city>
	<city>
		<name>北京</name>
		<temp>-5°</temp>
		<pm>800</pm>
	</city>
	<city>
		<name>西安</name>
		<temp>12°</temp>
		<pm>60</pm>
	</city>
</weather>



public class MainActivity extends Activity {

	List<City> cityList;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void click(View v){
		//获取到src文件夹下的资源文件
		InputStream is = getClassLoader().getResourceAsStream("weather.xml");
		
		//拿到pull解析器对象
		XmlPullParser xp = Xml.newPullParser();
		//初始化
		try {
			xp.setInput(is, "gbk");
			
			//获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,从而确定我们应该做什么操作
			int type = xp.getEventType();
			City city = null;
			while(type != XmlPullParser.END_DOCUMENT){
				//根据节点的类型,要做不同的操作
				switch (type) {
				case XmlPullParser.START_TAG:
					//					获取当前节点的名字
					if("weather".equals(xp.getName())){
						//创建city集合对象,用于存放city的javabean
						cityList = new ArrayList<City>();
					}
					else if("city".equals(xp.getName())){
						//创建city的javabean对象
						city = new City();
					}
					else if("name".equals(xp.getName())){
						//				获取当前节点的下一个节点的文本
						String name = xp.nextText();
						city.setName(name);
					}
					else if("temp".equals(xp.getName())){
						//				获取当前节点的下一个节点的文本
						String temp = xp.nextText();
						city.setTemp(temp);
					}
					else if("pm".equals(xp.getName())){
						//				获取当前节点的下一个节点的文本
						String pm = xp.nextText();
						city.setPm(pm);
					}
					break;
				case XmlPullParser.END_TAG:
					if("city".equals(xp.getName())){
						//把city的javabean放入集合中
						cityList.add(city);
					}
					break;

				}
				
				//把指针移动到下一个节点,并返回该节点的事件类型
				type = xp.next();
			}
			
			for (City c : cityList) {
				System.out.println(c.toString());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


相关文章推荐

Android演示使用PULL方式解析XML文件

之前已经分别介绍过使用SAX方式及DOM方式解析XML文件,本次介绍如何使用PULL方式解析。 三种方式解析XML文件的特性如下: SAX和PULL方式都属于无缓存的方式解析,在xml文件较大...

Android中使用PULL方式解析XML文件

Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是, Pull解析器产生的...
  • cjjky
  • cjjky
  • 2011年08月07日 23:24
  • 11086

android 使用pull方式解析xml文件

如题,应该网络上讲解的是比较多了,我这里只是做一个简单的总结。 首先在工程的src目录下建一个person.xml文件: 好,我们现在就用pull方式来解析这个xml文件,文件内容如下:注...

安卓解析XML文件系列2:使用PULL方式

安卓中解析XML文件的方式有三种,下面将第二种方式的使用方法介绍给大家。 使用pull比使用sax代码量少一些,PULL解析器的运行方式和SAX解析器很相似,它提供了类似的事件。 PULL特点: 简...

android中使用pull方式解析sdcard中的xml文件实例

Android中常见的xml解析方式有sax、dom和pull,下面我们就看一个小巧轻便,解析方便,速度很快的pull方式的实例。 先建一个xml吧:mission.xml Ch...

Android平台基于Pull方式对XML文件解析及写入

XML技术在跨平台的情况下的数据交互中得到了广泛的应用,假如我们需要开发一个Android应用程序,需要同服务器端进行数据交互,通过XML文件可以很方便的在Android平台和服务器之间进行数据传输,...

XML文件解析(Pull方式)

解析XML文档的方法是很多的,除了常用的SAX和DOM方法以外,还可以使用Java自带的Pull来解析XML文档。   1.使用Pull解析器解析XML文档   Pull解析器的运行方式和SAX...
  • MYBOYER
  • MYBOYER
  • 2013年05月14日 15:34
  • 455

PULL方式解析XML文件

首先需要创建一个xml文件以让程序获取: 下载安装apache 在hotdocs目录下新建一个文件get_data.xml(这里记事本创建不了,我用sublime创建),内容如下:1Google Ma...

android解析xml文件的方式(其三PULL方式)

上一节中,我们使用SAX方式解析xml文档, SAX方式是基于事件驱动的。当然android的事件机制是基于回调函数的。在这一节中,我们用另外一种方式解析xml文档,这种方式也是基于事件驱动的,与SA...

pull方式解析xml文件以及用Serializer序列化器生成xml文件

xml解析之pull解析 pull解析xml文件的步骤: 1.拿到XmlPullParserFactory工厂对象 2.通过工厂对象拿到解析器(newPullParser()) 3.指定要被解...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用pull方式解析xml文件
举报原因:
原因补充:

(最多只允许输入30个字)