PULL解析XML
XML:
- <?xml version="1.0" encoding="UTF-8"?>
- <persons>
- <person id = "23">
- <name>张老师</name>
- <age>21</age>
- </person>
- <person id = "20">
- <name>李老师</name>
- <age>25</age>
- </person>
- </persons>
Person类:
- package com.pull.domain;
- public class Person {
- private int id;
- private String name;
- private int age;
- public int getId() {
- return id;
- }
- public Person(int id, String name, int age) {
- super();
- this.id = id;
- this.name = name;
- this.age = age;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public Person() {
- // TODO Auto-generated constructor stub
- }
- @Override
- public String toString() {
- return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
- }
- }
PullXMLTools类:
- package com.pull.parser;
- import java.io.InputStream;
- 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.pull.domain.Person;
- /**
- * 主要是使用PULL解析xml
- *
- * @author jack
- *
- */
- public class PullXMLTools {
- public PullXMLTools() {
- // TODO Auto-generated constructor stub
- }
- /**
- * @param inputStream
- * 从服务器获取xml文件,以流的形式返回
- * @param encode
- * 编码格式
- * @return
- * @throws Exception
- */
- public static List<Person> parseXML(InputStream inputStream, String encode)
- throws Exception {
- List<Person> list = null;
- Person person = null;// 装载解析每一个person节点的内容
- // 创建一个xml解析的工厂
- XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
- // 获得xml解析类的引用
- XmlPullParser parser = factory.newPullParser();
- parser.setInput(inputStream, encode);
- // 获得事件的类型
- int eventType = parser.getEventType();
- while (eventType != XmlPullParser.END_DOCUMENT) {
- switch (eventType) {
- case XmlPullParser.START_DOCUMENT:
- list = new ArrayList<Person>();
- break;
- case XmlPullParser.START_TAG:
- if ("person".equals(parser.getName())) {
- person = new Person();
- // 取出属性值
- int id = Integer.parseInt(parser.getAttributeValue(0));
- person.setId(id);
- } else if ("name".equals(parser.getName())) {
- String name = parser.nextText();// 获取该节点的内容
- person.setName(name);
- } else if ("age".equals(parser.getName())) {
- int age = Integer.parseInt(parser.nextText());
- person.setAge(age);
- }
- break;
- case XmlPullParser.END_TAG:
- if ("person".equals(parser.getName())) {
- list.add(person);
- person = null;
- }
- break;
- }
- eventType = parser.next();
- }
- return list;
- }
- }
Test类:
- package com.pull.test;
- import java.io.InputStream;
- import java.util.List;
- import com.pull.domain.Person;
- import com.pull.http.HttpUtils;
- import com.pull.parser.PullXMLTools;
- public class Test {
- public Test() {
- // TODO Auto-generated constructor stub
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String path = "http://192.168.1.125:8080/myhttp/person.xml";
- InputStream inputStream = HttpUtils.getXML(path);
- List<Person> list = null;
- try {
- list = PullXMLTools.parseXML(inputStream, "utf-8");
- for (Person person : list) {
- System.out.println(person.toString());
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }

浙公网安备 33010602011771号