在上篇博客我们涉及到了利用Pull解析器对xml进行解析,转换为LIst对象。这里是链接
http://blog.csdn.net/wjg19890301/article/details/10456233
这篇呢,来看一下PULL解析器如何将LIst<Person>序列化到XML文件中去在上篇的PollXmlService中加入一个方法
我们需要一个LIst对象和一个输出流
/**
* 将List<Person>对象序列化到xml中
* @param persons
* @param ops
* @throws Exception
*/
public final static void exportXml(List<Person> persons,OutputStream ops)throws Exception{
//创建xml序列化器
XmlSerializer xs=Xml.newSerializer();
//设置输出流
xs.setOutput(ops, "UTF-8");
//创建xml开始文档节点
xs.startDocument("UTF-8", true);
xs.startTag(null,"persons");
for (Person person : persons) {
xs.startTag(null,"person");
xs.attribute(null, "id", person.getId().toString());
xs.startTag(null, "name");
xs.text(person.getName());
xs.endTag(null, "name");
xs.startTag(null, "age");
xs.text(person.getAge().toString());
xs.endTag(null, "age");
xs.endTag(null, "person");
}
xs.endTag(null, "persons");
xs.endDocument();
ops.flush();
ops.close();
}
好了。现在开始测试,在上次的测试类中加入一个测试方法
public void testExportXml() throws Exception{
List<Person> persons=new ArrayList<Person>();
persons.add(new Person(1,"你妹",25));
persons.add(new Person(2,"呵呵",12));
persons.add(new Person(3,"哈哈",43));
persons.add(new Person(4,"嘿嘿",56));
File file=new File(this.getContext().getFilesDir().getAbsoluteFile()+"/testpersons.xml");
FileOutputStream fos=new FileOutputStream(file);
PollXmlService.exportXml(persons, fos);
}
执行Android Junit Test
来看一下我们自定义的文件testpersons.xml文件生成了
把xml导出到桌面上,打开看一下
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<persons><person id="1"><name>你妹</name><age>25</age></person>
<person id="2"><name>呵呵</name><age>12</age></person>
<person id="3"><name>哈哈</name><age>43</age></person>
<person id="4"><name>嘿嘿</name><age>56</age></person>
</persons>