android使用pull方式解析xml

本文介绍了一个使用Pull解析器从XML文件中读取Person对象的Java类。该类通过解析XML文档,提取每个Person节点的数据,并将其封装到Person对象中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pull解析器的运行方式与SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。

package com.scl.parse;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import com.scl.domain.Person;

import android.util.Xml;

public class PullParsePerson {
	public List<Person> getPerson(InputStream in) throws Exception{
		List<Person> persons = null;
		Person person = null;
		//获得pull解析器
		XmlPullParser parser = Xml.newPullParser();
		//往解析器里放入输入流
		parser.setInput(in, "UTF-8");
		//获得事件类型
		int eventType = parser.getEventType();
		while(eventType != XmlPullParser.END_DOCUMENT){
			switch(eventType){
			//在文档开头初始化一些数据
			case XmlPullParser.START_DOCUMENT:
				persons = new ArrayList<Person>();
				break;
			//开始某个节点
			case XmlPullParser.START_TAG:
				if("person".equals(parser.getName())){
					person = new Person();
					person.setId(new Integer(parser.getAttributeValue(0)));
				}
				if(person != null){
					if("name".equals(parser.getName())){
						person.setName(parser.nextText());
					}
					if("age".equals(parser.getName())){
						person.setAge(new Short(parser.nextText()));
					}
				}
				break;
			//结束某个节点
			case XmlPullParser.END_TAG:
				if("person".equals(parser.getName())){
					persons.add(person);
					person = null;
				}
				break;
			}
			//获得下一个事件类型
			eventType = parser.next();
		}
		//文档解析结束
		return persons;
		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值