微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pull解析xml文件

解析的文件Person.xml
<?xml version="1.0" encoding="utf-8"?>
<persons>
    <person id="1" >
        <name>小罗</name>
        <age>21</age>
    </person>
 <person id="2">
     <name>android</name>
  <age>15</age>
 </person>
</persons>





Pull解析工具类
package com.example.xmlparse;

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

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

public class PullParseUtils {
	public static List<Person> parseXmlByPull(InputStream inputStream)
			throws Exception {
		List<Person> persons = null;
		Person person = null;
		//    创建XMLPullParserFactory解析工厂  
		XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
		//    通过XmlPullParserFactory工厂类实例一个XmlPullParser解析类  
		XmlPullParser xmlPullParse = factory.newPullParser();
		//    根据指定的编码来解析xml文档  
		xmlPullParse.setInput(inputStream,"utf-8");
		//    得到当前的事件类型  
		int eventType = xmlPullParse.getEventType();
		//    只要没有解析到xml的文档结束,就一直解析  
		while (eventType != XmlPullParser.END_DOCUMENT) {
			switch (eventType) {
			//    解析到文档开始的时候  
			case XmlPullParser.START_DOCUMENT:
				persons = new ArrayList<Person>();
				break;
			//    解析到xml标签的时候  
			case XmlPullParser.START_TAG:
				if ("person".equals(xmlPullParse.getName())) {
					person = new Person();
					//    得到person元素的第一个属性,也就是ID  
					person.setId(xmlPullParse.getAttributeValue(0));
				} else if ("name".equals(xmlPullParse.getName())) {
					//通过nextText得打元素的值
					person.setName(xmlPullParse.nextText());
				} else if ("age".equals(xmlPullParse.getName())) {
					//    如果是name元素,则通过nextText()方法得到元素的值  
					person.setAge(Integer.parseInt(xmlPullParse.nextText()));
				}
				break;
			//    解析到xml标签结束的时候  
			case XmlPullParser.END_TAG:
				if ("person".equals(xmlPullParse.getName())) {
					persons.add(person);
					person = null;
				}
				break;
			}
			//    通过next()方法触发下一个事件  
			eventType = xmlPullParse.next();
		}
		return persons;
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。