Android基础之Pull解析Xml

来源:互联网 发布:赞美诗我知谁掌管明天 编辑:程序博客网 时间:2024/06/02 09:01

pull解析器是一个开源的Java项目,Android中已经集成了pull解析器。JavaEE中也可以使用pull解析 , 但要导入jar包 。

pull解析提供了事件,如:开始元素和结束元素,使用parser.next(),可以进入下一个节点

实例:将XML文件解析出来

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="23">
        <name>kim</name>
        <age>25</age>
    </person>
    <person id="20">
        <name>jinwei</name>
        <age>30</age>
    </person>
</persons>

将XML文件解析出来

首先建立 一个person类用于存储xml中的person节点

public class Person {private int id;private int age;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
其次在处理函数中进行解析,例中XML解析后的数据保存早persons中

public static List<Person> getPersons(InputStream xml) throws Exception{List<Person> persons = null;Person person =null;//首先得到pull解析器XmlPullParser pullParser =Xml.newPullParser();//为解析器设置要解析的XML数据pullParser.setInput(xml, "UTF-8");//得到事件int event = pullParser.getEventType();while(event != XmlPullParser.END_DOCUMENT){switch(event){case XmlPullParser.START_DOCUMENT://文档开始persons = new ArrayList<Person>();break;case XmlPullParser.START_TAG:if("person".equals(pullParser.getName())){//取得当前指针的属性值int id = new Integer(pullParser.getAttributeValue(0));person = new Person();person.setId(id);}if("name".equals(pullParser.getName())){String name =pullParser.nextText();person.setName(name);}if("age".equals(pullParser.getName())){int  age =new Integer(pullParser.nextText());person.setAge(age);}break;case XmlPullParser.END_TAG:if("person".equals(pullParser.getName())){persons.add(person);person = null;}break;}pullParser.next();//让指针往后解析}return persons;}

说明:

XmlPullParser.START_DOCMENT 文档的开始,即XML中的<?xml version="1.0" encoding="UTF-8"?>这一句

XmlPullParser.START_TAG是标签的开始 如<person>,<name>

XmlPullParser.END_TAG是标签的结束 如</person>,</name>

0 0
原创粉丝点击