Pull解析

来源:互联网 发布:蚁群算法应用 编辑:程序博客网 时间:2024/05/17 02:41

Pull解析是Android中解析XMl文件的方法。他集合Dom解析以及Sax解析的优点,既可以控制何时循环结束,也不会占用很大的内存。

下面是Pull解析的简单使用:

package com.example.internetdemo;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;public class PullParserDemo {public static void pullParse(InputStream in) throws XmlPullParserException, IOException {XmlPullParserFactory xpf = XmlPullParserFactory.newInstance();XmlPullParser parser = xpf.newPullParser();parser.setInput(in,"UTF-8");//xml的编码集,一般为UTF-8ArrayList<Person> persons = null;//type-->读取到的内容的状态:开始文档、开始标签等int type = parser.getEventType();//开始文档:XmlPullParser.START_DOCUMENT//开始标签:XmlPullParser.START_TAG//结束标签:XmlPullParser.EDN_TAG//结束文档:XmlPullParser.END_DOCUMENT//文本内容:通过标签头之后获取Person p = null;while (type!=XmlPullParser.END_DOCUMENT) {//结束文档的时候结束循环switch (type) {case XmlPullParser.START_DOCUMENT://创建存放xml文件属性的集合persons = new ArrayList<Person>();break;case XmlPullParser.START_TAG://获取标签名String tagName = parser.getName();//新建person对象p = new Person();if ("person".equals(tagName)&&parser.getAttributeCount()==1/*属性为1*/) {//设置idp.setId(parser.getAttributeValue(0));}else if ("name".equals(tagName)) {//设置namep.setName(parser.nextText()/*起始标签和结束标签之间的字符串*/);}else if ("age".equals(tagName)) {//设置agep.setAge(parser.nextText());}break;case XmlPullParser.END_TAG:String endTagName = parser.getName();if ("person".equals(endTagName)) {//如果对象不为空,将其添加到集合中,并将其置空if (p != null) {persons.add(p);p = null;}}break;}//进入下一个状态type = parser.next();}}}


0 0