您的位置:首页 > 编程语言 > Java开发

使用pull的方式生成xml

2011-11-20 12:32 183 查看
在上次的博客中已经写过解析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里格式化一下就好看很多了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息