需求:现在有一个XML文件,要求用PULL方式解析
文件名:students.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <root>
- <student id="1" group="1">
- <name>张三</name>
- <sex>男</sex>
- <age>18</age>
- <email>zhangsan@163.com</email>
- <birthday>1987-06-08</birthday>
- <memo>好学生</memo>
- </student>
- <student id="2" group="2">
- <name>李四</name>
- <sex>女</sex>
- <age>18</age>
- <email>lisi@163.com</email>
- <birthday>1987-06-08</birthday>
- <memo>好学生</memo>
- </student>
- <student id="3" group="3">
- <name>小王</name>
- <sex>男</sex>
- <age>18</age>
- <email>xiaowang@163.com</email>
- <birthday>1987-06-08</birthday>
- <memo>好学生</memo>
- </student>
- <student id="4" group="4">
- <name>小张</name>
- <sex>男</sex>
- <age>18</age>
- <email>xiaozhang@163.com</email>
- <birthday>1987-06-08</birthday>
- <memo>好学生</memo>
- </student>
- <student id="5" group="5">
- <name>小明</name>
- <sex>男</sex>
- <age>18</age>
- <email>xiaoming@163.com</email>
- <birthday>1987-06-08</birthday>
- <memo>好学生</memo>
- </student>
- </root>
Xml对应的实体Student文件:
- package com.parsexml.entity;
- public class Student {
- private int id;
- private int group;
- private String name;
- private String sex;
- private int age;
- private String email;
- private String memo;
- private String birthday;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public int getGroup() {
- return group;
- }
- public void setGroup(int group) {
- this.group = group;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getMemo() {
- return memo;
- }
- public void setMemo(String memo) {
- this.memo = memo;
- }
- public String getBirthday() {
- return birthday;
- }
- public void setBirthday(String birthday) {
- this.birthday = birthday;
- }
- }
3解析代码
- package com.parsexml;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import org.xmlpull.v1.XmlPullParser;
- import org.xmlpull.v1.XmlPullParserException;
- import org.xmlpull.v1.XmlPullParserFactory;
- import com.parsexml.entity.Student;
- public class PullParseXml {
- public List<Student> PullParseXML(){
- List<Student> list=null;
- Student student = null;
- //构建XmlPullParserFactory
- try {
- XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();
- //获取XmlPullParser的实例
- XmlPullParser xmlPullParser=pullParserFactory.newPullParser();
- //设置输入流 xml文件
- xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("students.xml"),"UTF-8");
- //开始
- int eventType=xmlPullParser.getEventType();
- try {
- while(eventType!=XmlPullParser.END_DOCUMENT){
- String nodeName=xmlPullParser.getName();
- switch (eventType) {
- //文档开始
- case XmlPullParser.START_DOCUMENT:
- list=new ArrayList<Student>();
- break;
- //开始节点
- case XmlPullParser.START_TAG:
- //判断如果其实节点为student
- if("student".equals(nodeName)){
- //实例化student对象
- student=new Student();
- //设置Id属性
- student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));
- //设置Group属性
- student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));
- }else if("name".equals(nodeName)){
- //设置name
- student.setName(xmlPullParser.nextText());
- }else if("sex".equals(nodeName)){
- //设置sex
- student.setSex(xmlPullParser.nextText());
- }else if("age".equals(nodeName)){
- //设置age
- student.setAge(Integer.parseInt(xmlPullParser.nextText()));
- }else if("email".equals(nodeName)){
- //设置email
- student.setEmail(xmlPullParser.nextText());
- }else if("birthday".equals(nodeName)){
- //设置birthday
- student.setBirthday(xmlPullParser.nextText());
- }else if("memo".equals(nodeName)){
- //设置memo属性
- student.setMemo(xmlPullParser.nextText());
- }
- break;
- //结束节点
- case XmlPullParser.END_TAG:
- if("student".equals(nodeName)){
- list.add(student);
- student=null;
- }
- break;
- default:
- break;
- }
- eventType=xmlPullParser.next();
- }
- } catch (NumberFormatException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- }
- return list;
- }
- public static void main(String[] args) {
- List<Student> list=new PullParseXml().PullParseXML();
- for(Student student:list){
- System.out.println("id:"+student.getId()+"\tgroup:"+student.getGroup()+"\tname:"+student.getName()+"\tsex:"+student.getSex()+"\tage:"+student.getAge()+"\temail:"+student.getEmail()+"\tbirthday:"+student.getBirthday()+"\tmemo:"+student.getMemo());
- }
- }
- }