在上次的博客中已经写过解析xml的2种方式了,使用pull解析或生产xml效率高,代码简单。手机可以通过解析xml的方式获得webservice,也可以把一些手机壁纸存储为xml格式。相比解析xml文档,生产xml更简单一些,就使用到了startTag和endTag还有就是集合的操作。现在就一步一步的来弄一下这个,现在也觉得学习android也是比较好玩的。
1.写一个pojo类,这里就添加一个构造方法。为了避免出错也写一个无参构造
package org.lxh.vo; public class Person { private String id; private String name; private int age; public Person(){} public Person(String id, String name, int age) { this.id = id; this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getId() { return id; } public void setId(String id) { this.id = id; } }
2.编写生成xml的方法,这里在测试类里需要2个参数一个是集合,一个是写入器或输入流
public void saveXml(List<Person> persons,Writer out) throws Throwable{ XmlSerializer seria=Xml.newSerializer(); //seria.setOutput(out, "UTF-8"); //设置输出方式,这里使用OutputStream,编码使用UTF-8 seria.setOutput(out); //设置输出方式,这里使用写入器 seria.startDocument("UTF-8", true); //开始生成xml的文件头 seria.startTag(null, "persons"); //开始第一个元素节点,名称空间为空.元素名称是persons Iterator<Person> it=persons.iterator(); while(it.hasNext()){ Person p=it.next(); seria.startTag(null, "person"); seria.attribute(null, "id", p.getId().toString()); //添加属性,名称为id seria.startTag(null, "name"); seria.text(p.getName().toString()); //添加文本元素 seria.endTag(null, "name"); seria.startTag(null, "age"); seria.text(String.valueOf(p.getAge())); seria.endTag(null, "age"); seria.endTag(null, "person"); } seria.endTag(null, "persons"); //标签都是成对的 seria.endDocument(); out.flush(); out.close(); //关闭输出流 }
3.编写测试方法
public void save() throws Throwable { //改xml文件只能被该应用使用 //FileOutputStream out=this.getContext().openFileOutput("persons.xml", Context.MODE_PRIVATE); //添加几个对象到集合里面 List<Person> all=new ArrayList<Person>(); all.add(new Person("01","tom",22)); all.add(new Person("02","will",20)); Parse2 parse=new Parse2(); FileOutputStream out=this.getContext().openFileOutput("persons.xml", Context.MODE_PRIVATE); OutputStreamWriter writer=new OutputStreamWriter(out,"UTF-8"); BufferedWriter w=new BufferedWriter(writer); //缓冲区 parse.saveXml(all, w); }
到这里程序就结束了,这里主要使用写入器的方式。生成的xml如下所示
可以把xml放在eclipse里格式化一下就好看很多了。