在Pull解析器解析XML文件(以下简称上文)中是得到XMl文件中的数据,那么该如何将应用中的数据生成XMl文件呢?
1. 在上文中的业务类PersonService中新建save()类,代码如下
public static void save(List<Person> persons,OutputStream out) throws Exception{
XmlSerializer serializer = Xml.newSerializer();//得到序列化器
serializer.setOutput(out, "UTF-8");//输出流对象
//1.输出<?xml version="1.0" encoding="UTF-8"?>,开始文档
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for (Person person : persons) {
//生成<person ></person>
serializer.startTag(null, "person");//开始节点
serializer.attribute(null, "id", person.getId().toString());//生成id="10"
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();//关闭输出流
}
2.在上文中Person类添加如下构造方法
public Person(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Person(){}
3.在上文中PersonServiceTest类中添加如下测试方法
public void testSave() throws Exception{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(1,"gaoxxx",20));//为添加方便,为Person添加一个构造器
persons.add(new Person(2,"zhuxxx",21));
persons.add(new Person(3,"linxxx",22));
//<包>/files
File xmlFile = new File(getContext().getFilesDir(),"AppToXml.xml");
FileOutputStream outputStream = new FileOutputStream(xmlFile);//输出流对象
PersonService.save(persons, outputStream);
}
执行该测试方法,就会在当前应用的包底下生成对应的文件,复制到项目中,并利用Source—>Format进行格式化,结果如下
在浏览器中打开的效果如下