在Android上解析XML文件可以采用SAX、DOM和Android的自带的pull。其中pull最方便和推荐使用:

对于一个XML文件中的内容,要定制一个JAVA BEAN来接收,先看下.XML文件的内容:

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

看下解析方法:

/** * 解析XML * @param xml * @return * @throws Exception */public List<Person> getPersons(InputStream xml)throws Exception{List<Person> persons = null;Person person = null;XmlPullParser pullParser = Xml.newPullParser();pullParser.setInput(xml,"UTF-8");//为pull解析器设置要解析的数据int event = pullParser.getEventType();while(event != XmlPullParser.END_DOCUMENT){switch (event) {case XmlPullParser.START_DOCUMENT:persons = new ArrayList<Person>();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;}
测试方法:

public void testPerson()throws Exception{InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml");PersonService ps = new PersonService();List<Person> persons = ps.getPersons(xml);for (Person person : persons) {Log.i(TAG,person.toString());}}
再看下生成XML文件:

/** * 保存 * @param persons * @param out * @throws Exception */public void save(List<Person> 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();}

看下生成的测试方法:

public void testSave()throws Exception{PersonService ps = new PersonService();List<Person> persons = new ArrayList<Person>();persons.add(new Person(43,"zhangxx",80));persons.add(new Person(12,"lili",20));persons.add(new Person(15,"xiaoxiao",8));File xmlFile = new File(getContext().getFilesDir(),"itcase.xml");FileOutputStream outputStream = new FileOutputStream(xmlFile);ps.save(persons, outputStream);}




更多相关文章

  1. Android 布局文件属性讲解
  2. Android Gallery控件使用方法详解
  3. Android 设置横屏竖屏的方法
  4. Android 复习笔记之图解View类的XML属性、相关方法及说明
  5. Android关于looper的几个方法的个人理解
  6. (Android)JavaSocket编程,文件上传到服务器,客户端Android,服务器端J2
  7. 读取local.properties文件

随机推荐

  1. Activity之间传递类对象
  2. AndroidManifest.xml配置文件详解
  3. android的shader渲染器
  4. Android执行linux外部命令
  5. android studio教程-创建第一个项目Hello
  6. 使用Android中的Parcelable序列化对象
  7. Java乔晓松-android中上传图片到服务器To
  8. Android(安卓)apk反编译
  9. Android开发(二十九)——layout_weight的含
  10. android TabHost(选项卡)的使用方法