在PersonService的基础上,加上savePersons(·····),这时的PersonService为:

package com.njupt.xml;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer; import android.util.Xml; public class PersonService { public List<Person> loadPersons(InputStream in) throws Exception{
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in,"UTF-8"); List<Person> persons = new ArrayList<Person>();
Person p = null; for(int type = parser.getEventType() ; type != XmlPullParser.END_DOCUMENT ; type = parser.next()){ if(type == XmlPullParser.START_TAG){
if(parser.getName().equals("person")){
p = new Person();
String id = parser.getAttributeValue(0);
p.setId(Integer.parseInt(id));
persons.add(p); }else if(parser.getName().equals("name")){
String name = parser.nextText();
p.setName(name);
}else if(parser.getName().equals("age")){
String age = parser.nextText();
p.setAge(Integer.parseInt(age));
}
}
}
return persons;
} public void savePersons(List<Person> persons,
FileOutputStream out) throws Exception { XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(out,"UTF-8"); serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons"); for(Person p : persons){
serializer.startTag(null, "person");
serializer.attribute(null, "id", p.getId().toString()); serializer.startTag(null, "name");
serializer.text(p.getName());
serializer.endTag(null, "name"); serializer.startTag(null, "age");
serializer.text(p.getAge().toString());
serializer.endTag(null, "age"); serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument(); }
}

2、PersonTest

package com.njupt.xml;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List; import android.test.AndroidTestCase; public class PersonTest extends AndroidTestCase{ public void test1() throws Exception{
PersonService service = new PersonService();
InputStream in = PersonTest.class.getClassLoader().getResourceAsStream("persons22.xml"); List<Person> persons = service.loadPersons(in); for(Person p : persons){
System.out.println(p);
} Person p = new Person(4,"allen",20);
persons.add(p); service.savePersons(persons,new FileOutputStream("/mnt/sdcard/persons22.xml"));
}
}

3、Person22.xml

这时生成的person22.xml文件的内容如下(注意,他不会帮我们把xml文件格式化):

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><persons><person id="1"><name>范冰冰</name><age>31</age></person><person id="2"><name>林志玲</name><age>38</age></person><person id="3"><name>杨幂</name><age>26</age></person><person id="4"><name>allen</name><age>20</age></person></persons>

android——写xml的更多相关文章

  1. Android -- 写xml到SD卡中

    信息类                                                                                          private ...

  2. 不可不知的 Android strings.xml 那些事

    相信 strings.xml 已经是大家在 Android 开发中最熟悉的文件之一了,但其实它也有很多需要注意的地方和一些小技巧,知道了这些可以让你的 Android 应用更加规范易用,大家来看看吧. ...

  3. Android,XML解析

    XML解析三种方式 DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树.检索所需的数据: 简单直观,但需要将文档读取到内存,并不太适合移动设备: SAX ...

  4. [android] AndroidManifest.xml 详解

    第1部分 标签库+包路径+版本控制 <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...

  5. Android 生成xml文件及xml的解析

    1.生成xml文件的两种方式 (1)采用拼接的方式生成xml(不推荐使用) (2)利用XmlSerializer类生成xml文件 package com.example.lucky.test52xml ...

  6. android 写文件到sd卡问题小记

    android 写文件到sd卡问题小记 事情是这样子的.... 这天我开始编写项目调试工具,高大上不?-----其实就是记录实时网络请求和崩溃日志相关等的小工具(此处一个会心的微笑). 然后我是这样写 ...

  7. Android 使用xml序列化器生成xml文件

    在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...

  8. 使用XmlWriter写Xml

    假定创建了XmlWriter的实例变量xmlWriter,下文中将使用此实例变量写Xml 1.如何使用XmlWriter写Xml文档声明 ? // WriteStartDocument方法可以接受一个 ...

  9. Android之XML序列化和解析

    XML文件是一种常用的文件格式,可以用来存储与传递数据 ,本文是XML文件序列化与解析的一个简单示例 写文件到本地,并用XML格式存储 /** * 写xml文件到本地 */ private void ...

随机推荐

  1. ubuntu安装ulipad

    以下内容部分我是从其他地方找的,并且做了适当的修改,亲身测试可以安装成功   在安装ulipad之前,先安装一个超级好用的Python的交互式Shell--iPython.iPython功能很强大, ...

  2. Hibernate 多对一

    Hibernate的many-to-one 关联. 具体看配置文件: <?xml version="1.0"?> <!DOCTYPE hibernate-mapp ...

  3. 我的Python成长之路---第四天---Python基础(14)---2016年1月23日(寒风刺骨)

    一.生成器和迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. ...

  4. Delphi_MemoryModule — load DLL from memory. Also includes hooking utilities.

    https://github.com/Fr0sT-Brutal/Delphi_MemoryModule

  5. kingso_module - Taocode

    kingso_module - Taocode 模块介绍 Merger 功能介绍 Merger的功能: 合并多台Searcher机器的部分查询结果,得到最终的完整查询结果 向Detail集群请求最终展 ...

  6. [Unity 3D] Unity 3D 性能优化 (一)

    听到过很多用Unity 3D开发游戏的程序员抱怨引擎效率太低,资源占用太高,包括我自己在以往项目的开发中也头疼过.最近终于有了空闲,可以仔细的研究一下该如何优化Unity 3D下的游戏性能.其实国外有 ...

  7. stm32之ADC

    将模拟量转换为数字量的过程称为模式(A/D)转换,完成这一转换的期间成为模数转换器(简称ADC);将数字量转换为模拟量的过程为数模(D/A)转换,完成这一转换的器件称为数模转换器(简称DAC). 模拟 ...

  8. 打开sa属性报错

    --如果打开sa属性报错如下:无法显示请求的对话框.属性IsLocked不可用于“登录名sa".该对象可能没有此属性,也可能是访问权限不足而无法检索 --解决办法:首先用windows登录, ...

  9. C#文件上传和文件下载

    #region 文件上传 private void UpLoadFile(string fileName, string fileNamePath, string uriString) { ); if ...

  10. 边框圆角化方式(原文链接http://www.cnblogs.com/SJP666/p/4678730.html)

    第一种方法:如果是CSS2.2的话,可以简单写一个制作圆角矩形,分上中下裁成三张图 <title>CSS3实现圆角</title> <style type="t ...