采用Pull解析器生成XML内容

        采用Pull解析器生成XML内容

在Android已经集成进了Pull解析器,所以无需添加任何jar文件
Android系统本身用到的xml,其内部也是采用Pull解析器进行解析的。

下面是一个xml文件, 是要以这个xml结构生成xml的内容:
        <?xml version="1.0" encoding="UTF-8" ?> <!-- start document -->
	<persons>
		<person id="23">
			<name>liming</name>
			<age>30</age>
		</person>
		<person id="20">
			<name>zhangxiaoxiao</name>
			<age>25</age>
		</person>
	</persons>
	<!-- end document -->
写一个类是用来生成xml的类:
/**
	 * 采用Pull解析器生成XML内容 ,保存数据、
	 * @param persons       数据
	 * @param out           输出方向
	 * @throws Exception
	 */
	public static void save(List<Person> persons, OutputStream out) throws Exception{
		//用Xml工具类快速得到序列化器
		XmlSerializer serializer = Xml.newSerializer();
		//setOutput(OutputStream os, String encoding)  OutputStream为内容输出方向
		serializer.setOutput(out, "utf-8");
		//写入文档的开始文档,即<?xml version="1.0" encoding="utf-8"?>
		//serializer.startDocument(字符编码, 用于指定这个xml文件是否单独存在)
		serializer.startDocument("utf-8", true);
		
		//serializer.startTag(命名空间, 节点名)
		serializer.startTag(null, "persons");
		
		//对persons进行迭代,得到各个person标签
		for (Person person : persons) {
			serializer.startTag(null, "person");
			
			//得到person的属性值id
			//attribute(命名空间, 属性名, 属性值)
			serializer.attribute(null, "id",  person.getId().toString());
			
			serializer.startTag(null, "name");
			//得到name节点的内容
			serializer.text(person.getName());
			serializer.endTag(null, "name");
			
			
			serializer.startTag(null, "age");
			serializer.text(person.getAge().toString());
			serializer.endTag(null, "age");
			
			
			serializer.endTag(null, "person");
		}
		
		//persons节点的结束标签
		serializer.endTag(null, "persons");
		
		//文档写入结束
		serializer.endDocument();
		
		//把数据刷出去,再关闭
		out.flush();
		out.close();
	}
用Junit单元测试类测试
先在清单文件AndroidManifest.xml中加入:

        <uses-library android:name="android.test.runner"/>
        <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.me_xmlandroid"
        android:label="解析器解析和生成XML内容"></instrumentation>
在测试类中:
public class PersonServiceTest extends AndroidTestCase{
	
		public void testSave() throws Exception{
		
			List<Person> persons = new ArrayList<Person>();
			persons.add(new Person(1, "志光", 22));
			persons.add(new Person(2, "丹", 20));
			persons.add(new Person(3, "杏", 20));
			
			//把这个xml保存到 <当前包>/files 下
			File xmlFile = new File(getContext().getFilesDir(), "out.xml");
			FileOutputStream outStream = new FileOutputStream(xmlFile);
			PersonService.save(persons, outStream);
		
		}
			
	}
现在就已经完成用pull解析器生成xml


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值