http://www.myexception.cn/xml-soap/428906.html

Android中内置的Pull解析器,因此可以使用Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。


直接贴出解析和读取代码:

package com.cyh.service;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.util.Xml;import com.cyh.domain.Person;public class PersonService {/** * 解析XML Pull破解器方法 * @param xml * @return * @throws Exception */public static List<Person> getPersons(InputStream xml) throws Exception{List<Person> persons = null;Person person = null;//XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();XmlPullParser parser = Xml.newPullParser();//为Pull破解器设置要解析的XMLparser.setInput(xml, "UTF-8");int event = parser.getEventType();while(event != XmlPullParser.END_DOCUMENT){switch (event){case XmlPullParser.START_DOCUMENT:persons = 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);}if("name".equals(parser.getName())){String name = parser.nextText();person.setName(name);}if("age".equals(parser.getName())){int age = Integer.parseInt(parser.nextText());person.setAge(age);}break;case XmlPullParser.END_TAG:if("person".equals(parser.getName())){persons.add(person);person = null;}break;}event = parser.next();}return persons;}/** * 保存数据到XML文件中 * @param list * @param out * @throws Exception */public static void save(List<Person> list, OutputStream out) throws Exception{XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(out, "UTF-8");serializer.startDocument("UTF-8", true);//文档开始serializer.startTag(null, "persons");for(Person p:list){serializer.startTag(null, "person");serializer.attribute(null, "id", p.getId().toString());serializer.startTag(null, "name");serializer.text(p.getName());serializer.endTag(null, "name");serializer.startTag(null, "age");serializer.text(p.getAge().toString());serializer.endTag(null, "age");serializer.endTag(null, "person");}serializer.endTag(null, "persons");serializer.endDocument();//文档结束out.flush();out.close();}}

更多相关文章

  1. android 增加鼠标事件
  2. android PathData生成问题
  3. Android中给Listview的HeadView加ViewPager自动轮播图,解决滑动
  4. Android强行进阶—按键事件&焦点事件攻略
  5. Android界面设计学习日志(一)
  6. Delphi XE5 for Android(安卓)(七)
  7. AndroidManifest.xml 详解 (四) 之uses-permission
  8. 【Android】自定义FlowLayout,支持多种布局优化--android-flowlay
  9. Android中使用Pull解析器读取XML文件

随机推荐

  1. Android系统刷机常用名词解析
  2. 中国Android软件商店摘要(2011-1-21统计)
  3. SimpleSNS for android 第1周发布
  4. Android之NDK开发初探
  5. Android(安卓)5.0源码编译问题
  6. Android Things:用户驱动-传感器
  7. android studio 无线调试手机
  8. 内存使用总结篇 -- Android内存优化第五
  9. Android 4.4 全套源码及子模块源码的下载
  10. Android App 性能优化