Android学习笔记(八)

本文介绍了一个使用Pull解析器实现XML文件写入的服务类。通过具体的代码示例展示了如何利用XmlSerializer来构建XML文档,并实现了Person对象集合到XML文件的转换。测试用例验证了方法的有效性。

PULL实现数据写入XML

 

org.wp.service

PULLPersonService

package org.wp.service;

import java.io.Writer;
import java.util.List;
import org.wp.domain.Person;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;

public class PULLPersonService {
	public static void writeXml(List<Person> persons, Writer writer)
			throws Exception {
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(writer);

		// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
		// true 代表standalone="yes"
		serializer.startDocument("UTF-8", true);
		// null代表没有命名空间
		serializer.startTag(null, "persons");

		for (Person person : persons) {
			serializer.startTag(null, "person");
			serializer.attribute(null, "id", String.valueOf(person.getId()));

			serializer.startTag(null, "name");
			serializer.text(person.getName());
			serializer.endTag(null, "name");

			serializer.startTag(null, "age");
			serializer.text(String.valueOf(person.getAge()));
			serializer.endTag(null, "age");

			serializer.endTag(null, "person");
		}
		serializer.endTag(null, "persons");
		serializer.endDocument();

		// flush方法即使在缓冲区中没有满的情况下
		// 也会将缓冲区内的内容强制写到外设
		// 也就是所谓的刷新
		writer.flush();
		// 关闭输入输出流
		writer.close();
	}
}

 

org.wp.xml

PULLPersonServiceTest

package org.wp.xml;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import org.wp.domain.Person;
import org.wp.service.PULLPersonService;
import android.content.Context;
import android.test.AndroidTestCase;
import android.util.Log;

public class PULLPersonServiceTest extends AndroidTestCase {

	private static final String TAG = "PULLPersonServiceTest";

	public void testWriteXml() throws Exception {
		FileOutputStream outStream = this.getContext().openFileOutput(
				"persons.xml", Context.MODE_PRIVATE);
		OutputStreamWriter writer = new OutputStreamWriter(outStream, "UTF-8");
		// 缓冲写入器
		BufferedWriter bufferedWriter = new BufferedWriter(writer);

		// 不写入文件,直接获得XML中的内容
		// StringWriter writer = new StringWriter();

		List<Person> persons = new ArrayList<Person>();
		persons.add(new Person(12, "张三", new Short((short) 22)));
		persons.add(new Person(16, "李四", new Short((short) 36)));
		persons.add(new Person(90, "田七", new Short((short) 28)));
		PULLPersonService.writeXml(persons, writer);

		Log.i(TAG, writer.toString());
	}
}

 

org.wp.domain

Person

package org.wp.domain;

public class Person {

	private Integer id;
	private String name;
	private Short age;

	public Person() {

	}

	public Person(Integer id, String name, Short age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Short getAge() {
		return age;
	}

	public void setAge(Short age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Id=" + id + ",Name=" + name + ",Age=" + age;
	}
}

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值