Android写入xml文件案例

说明:该文章所写的案例和博文 《Android中Pull解析器解析xml文件案例》使用同一个工程测试;

首先

给出一个想要输出xml文件示例:

=>23>然后

编写业务类:

package com.yangzi.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.yangzi.domain.Person;{/** 解析xml文件* @param xml xml文件数据流* @return xml文件里的内容集合* @throws Exception* */public static List<Person> getPersons(InputStream xml) throws Exception {List<Person> persons = null;Person person = null;//得到xmlpull解析器XmlPullParser pullParser = Xml.newPullParser();//設置解析器要解析的内容,和编码方式pullParser.setInput(xml,”utf-8″);(event != XmlPullParser.END_DOCUMENT){switch (event) {//xml文件开始节点,开始节点一般做数据的初始化case XmlPullParser.START_DOCUMENT:persons = new ArrayList<Person>();break;//若为开始节点case XmlPullParser.START_TAG://若为person节点if(“person”.equals(pullParser.getName())){//得到idperson = new Person();id = Integer.valueOf(pullParser.getAttributeValue(0));person.setId(id);}//若为名字节点if(“name”.equals(pullParser.getName())){String name = pullParser.nextText();person.setName(name);}//若为年龄节点if(“age”.equals(pullParser.getName())){age = Integer.valueOf(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;}/** 保存至xml文件* @param out 输出方向* @param persons 数据* @throws Exception* */(OutputStream out,List<Person> persons) throws Exception{XmlSerializer serializer = Xml.newSerializer();//获得反序列化对象serializer.setOutput(out, “utf-8”);//设置输出流及编码方式serializer.startDocument(“utf-8”, true);//设置xml文件startDocument,同样,,后面有对应的endDocumentserializer.startTag(null, “persons”);//开始节点for(Person person:persons){serializer.startTag(null, “person”);//开始节点serializer.attribute(null, “id”,person.getId()+””);//设置开始节点属性值//一个新的节点serializer.startTag(null, “name”);serializer.text(person.getName());serializer.endTag(null, “name”);//一个新的节点serializer.startTag(null, “age”);serializer.text(person.getAge()+””);serializer.endTag(null, “age”);serializer.endTag(null, “persons”);//结束节点}serializer.endTag(null, “persons”);//结束节点serializer.endDocument();//对应startDocumentout.flush();//刷新流out.close();//关闭流}}接着

测试一下,测试类的编写:

package com.yangzi.test;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.List;import android.test.AndroidTestCase;import android.util.Log;import com.yangzi.domain.Person;import com.yangzi.service.PersonService;{String TAG = “PersonServiceTest”;public static List<Person> persons = null;() throws Exception{InputStream in = this.getClass().getClassLoader().getResourceAsStream(“person.xml”);persons = PersonService.getPersons(in);for(Person per:persons){Log.i(TAG, per.toString());}}/**/public void testSave()throws Exception{//调用测试testPersons方法得到personstestPersons();//得到该APP的包String path = getContext().getFilesDir().toString();//new 新文件File xmlFile = new File(path,”xxx.xml”);//文件操作流FileOutputStream out = new FileOutputStream(xmlFile);PersonService.save(out, persons);}}

OK,到此结束啦!

生活是一段奇妙的旅行,就在那一去无返的火车上。

Android写入xml文件案例

相关文章:

你感兴趣的文章:

标签云: