阅读更多 在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。

xml代码
<?xml version="1.0" encoding="UTF-8"?>李明30李向梅25


解析核心代码

package cn.itcast.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 cn.itcast.domain.Person;public class PersonService {/** * 获取数据 * @param xml * @return * @throws Exception */public static List getPersons(InputStream xml) throws Exception{List persons = null;Person person = null;XmlPullParser pullParser = Xml.newPullParser();pullParser.setInput(xml, "UTF-8");//为Pull解析器设置要解析的XML数据int event = pullParser.getEventType();while(event != XmlPullParser.END_DOCUMENT){switch (event) {case XmlPullParser.START_DOCUMENT:persons = new ArrayList();break;case XmlPullParser.START_TAG:if("person".equals(pullParser.getName())){int id = new Integer(pullParser.getAttributeValue(0));person = new Person();person.setId(id);}if("name".equals(pullParser.getName())){String name = pullParser.nextText();person.setName(name);}if("age".equals(pullParser.getName())){int age = new Integer(pullParser.nextText());person.setAge(age);}break;case XmlPullParser.END_TAG:if("person".equals(pullParser.getName())){persons.add(person);person = null;}break;}event = pullParser.next();}return persons;}/** * 保存数据 * @param persons 数据 * @param out 输出方向 * @throws Exception */public static void save(List persons, OutputStream out) throws Exception{XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(out, "UTF-8");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();out.flush();out.close();}}


javaBean
package cn.itcast.domain;public class Person {private Integer id;private String name;private Integer 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 Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";}public Person(Integer id, String name, Integer age) {this.id = id;this.name = name;this.age = age;}public Person(){}}


添加测试用例
package cn.itcast.test;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import cn.itcast.domain.Person;import cn.itcast.service.PersonService;import android.test.AndroidTestCase;import android.util.Log;public class PersonServiceTest extends AndroidTestCase {private static final String TAG = "PersonServiceTest";public void testPersons() throws Exception{InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");List persons = PersonService.getPersons(xml);for(Person person : persons){Log.i(TAG, person.toString());}}public void testSave() throws Exception{List persons = new ArrayList();persons.add(new Person(43, "zhangxx", 80));persons.add(new Person(12, "lili", 20));persons.add(new Person(78, "xiaoxiao", 8));// <包>/filesFile xmlFile = new File(getContext().getFilesDir(), "itcast.xml");FileOutputStream outStream = new FileOutputStream(xmlFile);PersonService.save(persons, outStream);}}

更多相关文章

  1. 常用的android权限配置和常用工具代码
  2. Android(安卓)5.1状态栏背景色定制 在Launcher3界面显示透明,在其
  3. ViewPager实现一个页面多个Item的显示
  4. Android(安卓)数据导出之Excle jxl.jar
  5. Android桌面小部件实例 桌面小时钟
  6. Android(安卓)底部地址选择弹框
  7. Android(安卓)使用Json实现服务器与客户端数据的交互
  8. Android:获取设备ID、型号等
  9. Android背景渐变色效果

随机推荐

  1. android绘图之Paint(1)
  2. Android开发05—Android常用高级控件(下)
  3. android中HttpURLConnection调用getRespo
  4. Windows环境下Android Studio系列4—界面
  5. android中MotionEvent.ACTION_CANCEL事件
  6. Android初级教程_在电脑上共享手机屏幕
  7. Android SDK自带教程之BluetoothChat
  8. android简单demo学习系例之排版(TableLay
  9. 深入Gradle插件开发
  10. Android MediaPlayer 常用方法介绍