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. Delphi XE5 for Android(安卓)(七)
  2. AndroidManifest.xml 详解 (四) 之uses-permission
  3. 八、使用pull解析器操作xml文件
  4. Android(安卓)电话系统rild分析
  5. Android(安卓)之 系统广播机制BroadcastReceiver的使用
  6. Android(安卓)应用程序
  7. Android常用之Butterknife使用详解
  8. android第三天课程 activity生命周期
  9. monkey测试android稳定性

随机推荐

  1. 数据库管理中19个MySQL优化方法
  2. MySQL使用的常见问题解决与应用技巧汇总
  3. MySQL中索引与视图的用法与区别详解
  4. MySQL中参数sql_safe_updates在生产环境
  5. mysql5.7.17在win2008R2的64位系统安装与
  6. centos上安装mysql并设置远程访问的操作
  7. 详解MySQL中EXPLAIN解释命令及用法讲解
  8. mysql 无法联接常见故障及原因分析
  9. MySQL使用中遇到的问题记录
  10. MySQL百万级数据分页查询优化方案