Pull方式解析XML
1、XML文件

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

2、实体类

package com.example.pullparsexml;public class Person {private Integer id;private String name;private Short age;public Person(){}public Person(Integer id, String name, Short age) {this.id = id;this.name = name;this.age = age;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Short getAge() {return age;}public void setAge(Short age) {this.age = age;}@Overridepublic String toString() {return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";}}

3、代码实现

package com.example.pullparsexml;import java.io.InputStream;import java.io.Writer;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.util.Xml;public class PullParseXML {public static void save(List<Person> persons, Writer writer)throws Throwable {XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(writer);serializer.startDocument("UTF-8", true);serializer.startTag(null, "persons");for (Person person : persons) {serializer.startTag(null, "person");serializer.attribute(null, "id", person.getId().toString());serializer.startTag(null, "name");serializer.text(person.getName());serializer.endTag(null, "name");serializer.startTag(null, "age");serializer.text(person.getAge().toString());serializer.endTag(null, "age");serializer.endTag(null, "person");}serializer.endTag(null, "persons");serializer.endDocument();writer.flush();writer.close();}public static List<Person> getPersons(InputStream inStream)throws Throwable {List<Person> persons = null;Person person = null;XmlPullParser parser = Xml.newPullParser();parser.setInput(inStream, "UTF-8");int eventType = parser.getEventType();// 产生第一个事件while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件switch (eventType) {case XmlPullParser.START_DOCUMENT:persons = new ArrayList<Person>();break;case XmlPullParser.START_TAG:String name = parser.getName();// 获取解析器当前指向的元素的名称if ("person".equals(name)) {person = new Person();person.setId(new Integer(parser.getAttributeValue(0)));}if (person != null) {if ("name".equals(name)) {person.setName(parser.nextText());// 获取解析器当前指向元素的下一个文本节点的值}if ("age".equals(name)) {person.setAge(new Short(parser.nextText()));}}break;case XmlPullParser.END_TAG:if ("person".equals(parser.getName())) {persons.add(person);person = null;}break;}eventType = parser.next();}return persons;}}

更多相关文章

  1. jscript和vbscript对XML元素属性进行操作的方法
  2. 分享一个jscript与vbscript操作XML元素属性的方法
  3. C#中通过xpath查找xml的指定元素的代码实例
  4. 关于XML元素的10篇课程推荐
  5. Vue.js流程图插件 可自定义流程节点事件
  6. Node.js 事件循环完整指南[每日前端夜话0x9F]
  7. 分布式作业系统 Elastic-Job-Lite 源码分析 —— 作业事件追踪
  8. 如何正确使用Node.js事件[每日前端夜话0x4B]
  9. 现代浏览器探秘(part4):事件处理 [每日前端夜话(0x14)]

随机推荐

  1. Android调用百度地图Web端接口,实现百度定
  2. 解决Android Studio运行编译时间久的最有
  3. 直接拿来用!十大Material Design开源项目
  4. Android Studio获取数字签名(SHA1)的方法
  5. Android Volley:使用方法总结及实例解析
  6. Android之用Handler实现主线程和子线程互
  7. Android 歌词Lrc显示 自定义View
  8. Android 事件输入系统整体框架
  9. Android图片缓存处理
  10. 使用AndServer在Android上搭建Web服务器