android中pull解析(XML)

来源:互联网 发布:spacex 知乎 编辑:程序博客网 时间:2024/05/04 08:38

1、写一个要解析的实体的类,你要解析相关字段的实体类,POJO)。


2、如果想看android中怎么获得流文件的(android中Form提交获得流文件),请看我的另外一篇笔记android中SAX解析.


3、编写解析代码:

package com.parse;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserFactory;import com.entity.person.Person;/** *  * 解析XML文件 * @author Administrator * */public class Parse_XML {//encode编码格式public static List<Person> getXML(InputStream in,String encode){List<Person> list = new ArrayList<Person>();Person person=null;//创建工厂实例来解析我们的XML文件try {XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance();XmlPullParser pull = pullFactory.newPullParser();pull.setInput(in,encode);//解析的时候不仅需要流文件还需要字符编码int eventType = pull.getEventType();while(eventType != XmlPullParser.END_DOCUMENT){//不是结束文档事件的时候switch (eventType) {//根据节点事件来分别处理case XmlPullParser.START_DOCUMENT:break;case XmlPullParser.START_TAG:if("person".equals(pull.getName())){person = new Person();person.setId(pull.getAttributeValue(0));//pull.getAttributeName(0)获得节点的第0个属性名称person.setClazz(pull.getAttributeValue(1));//取得第二个属性}else if(pull.getName().equals("name")){person.setName(pull.nextText());//获取该节点的内容}else if(pull.getName().equals("age")){person.setAge(pull.nextText());}break;case XmlPullParser.END_TAG:if("person".equals(pull.getName())){list.add(person);}break;case XmlPullParser.END_DOCUMENT:break;}eventType = pull.next();//注意放这个的位置,每一个标签过后都要next下一个标签}}catch (Exception e) {e.printStackTrace();}return list;}}


原创粉丝点击