现在的位置: 首页 > 综合 > 正文

android 使用pull生成xml

2013年10月04日 ⁄ 综合 ⁄ 共 3039字 ⁄ 字号 评论关闭

有些时候我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中;或者使用DOM
API
生成XML文件,或者也可以使用pull解析器生成XML文件,在android等移动设备上推荐大家使用Pull解析器

生成实现代码:

package com.scl.parse;

import java.io.OutputStream;
import java.io.Writer;
import java.util.List;

import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;

import com.scl.domain.Person;

public class PullCreatXml {
	/**
	 * 使用输出流的方式
	 * @param persons
	 * @param out
	 * @throws Exception
	 */
	public void creatPersonXml(List<Person> persons, OutputStream out) throws Exception{
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(out, "utf-8");
		//文档开始
		serializer.startDocument("utf-8", true);
		//开始persons标签
		serializer.startTag(null, "persons");
		for(Person person : persons){
			//开始person标签
			serializer.startTag(null,"person");
			serializer.attribute(null, "id", person.getId().toString());
			
			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");
			
			//结束person标签
			serializer.endTag(null, "person");
		}
		//结束persons标签
		serializer.endTag(null, "persons");
		//文档结束
		serializer.endDocument();
		out.flush();
		out.close();
	}
	/**
	 * 使用Writer方式
	 * @param persons
	 * @param writer
	 * @throws Exception
	 */
	public void creatPersonXml2(List<Person> persons, Writer writer) throws Exception{
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(writer);
		//文档开始
		serializer.startDocument("utf-8", true);
		//开始persons标签
		serializer.startTag(null, "persons");
		for(Person person : persons){
			//开始person标签
			serializer.startTag(null,"person");
			serializer.attribute(null, "id", person.getId().toString());
			
			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");
			
			//结束person标签
			serializer.endTag(null, "person");
		}
		//结束persons标签
		serializer.endTag(null, "persons");
		//文档结束
		serializer.endDocument();
		writer.flush();
		writer.close();
	}
}

单元测试代码

public void testPullCreatXmlTest() throws Throwable{
		FileOutputStream out = this.getContext().openFileOutput("person.xml", Context.MODE_PRIVATE);
		PullCreatXml creatXml = new PullCreatXml();
		List<Person> persons = new ArrayList<Person>();
		persons.add(new Person(1,"杨过",new Short("15")));
		persons.add(new Person(2,"段誉",new Short("25")));
		creatXml.creatPersonXml(persons, out);
	}
	public void testPullCreatXmlTest2() throws Throwable{
		FileOutputStream out = this.getContext().openFileOutput("person2.xml", Context.MODE_PRIVATE);
		PullCreatXml creatXml = new PullCreatXml();
		List<Person> persons = new ArrayList<Person>();
		persons.add(new Person(1,"杨过",new Short("15")));
		persons.add(new Person(2,"段誉",new Short("25")));
		OutputStreamWriter writer = new OutputStreamWriter(out, "utf-8");
		creatXml.creatPersonXml2(persons, writer);
	}
	/** 返回字符串 */
	public void testPullCreatXmlTest3() throws Throwable{
		PullCreatXml creatXml = new PullCreatXml();
		List<Person> persons = new ArrayList<Person>();
		persons.add(new Person(1,"杨过",new Short("15")));
		persons.add(new Person(2,"段誉",new Short("25")));
		StringWriter writer = new StringWriter();
		creatXml.creatPersonXml2(persons, writer);
		Log.i(TAG, writer.toString());
	}

抱歉!评论已关闭.