使用pull的方式生成xml

在上次的博客中已经写过解析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如下所示

使用pull的方式生成xml_第1张图片

可以把xml放在eclipse里格式化一下就好看很多了。

你可能感兴趣的:(使用pull的方式生成xml)