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}@Overridepublic 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 stubString 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 blocke.printStackTrace();}}}


更多相关文章

  1. android获取sd卡路径方法:
  2. android用于打开各种文件的intent
  3. Android(安卓)动态获取文本宽度
  4. android 权限
  5. android获取系统环境变量
  6. android WifiMange获取IP为负
  7. android中常见的二种数据解析方法----XML和Json
  8. Android获取图片Uri/path
  9. Android--用SAX解析xml文件

随机推荐

  1. Android软件汉化/精简/去广告/优化教程
  2. Flutter之原生交互(Android)
  3. Android(安卓)模拟MotionEvent事件 触发
  4. iphone Android(安卓)JS的使用
  5. [Android]ScrollView和ListView套用冲突
  6. Android(安卓)adb.exe程序启动不起来,如
  7. 【Android】IPC、AIDL、Binder
  8. Android之用自定义的shape去实现shadow效
  9. APP安装支持安装到SDCard
  10. Android与设计模式(4)外观/桥接/MVP