在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. 关于jave在oracle驱动下事务提交与回滚问题

    一直以来,都觉得Connection假设设置了setAutoCommit(false)后.启动手工事务提交.必须手工进行commit或者rollback才行.今天正好遇到一个问题.结果大跌眼镜. 于是 ...

  2. git 使用过程(二、创建版本库)

    1.显示当前git所在操作文件路径 命令:pwd  2.改变当前操作路径 命令:cd /e/神马神马的,如果想到当前文件夹的某个子目录下,可以直接输入命令:cd 子目录名称,这样就可以了. 3.创建一 ...

  3. ASP.NET MVC 5 学习教程:控制器传递数据给视图

    原文 ASP.NET MVC 5 学习教程:控制器传递数据给视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字 ...

  4. linux下I2C驱动

    2C协议规定了主机和从机的概念,在驱动中采用的多是适配器(主机)和设备(从机).首先,i2c规定  Bus    -> Algorithm  算法               Adapter   ...

  5. 基于visual Studio2013解决C语言竞赛题之0523魔方阵

     题目

  6. CSS - ResetCss

    /* KISSY CSS Reset 理念:清除和重置是紧密不可分的 特色:1.适应中文 2.基于最新主流浏览器 */ /* 清除内外边距 */ body, h1, h2, h3, h4, h5, h ...

  7. 不能使用ASP.NET验证控件---WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptRes

    方法一: 在webconfig中找到 <appSettings>        <add key=" aspnet:UseTaskFriendlySynchronizati ...

  8. 数据类型及其空间大小,vs2012实测

    #include "stdafx.h" #include <stdio.h> #include "common.h" #include " ...

  9. 【转】CentOS上安装 jdk:rpm安装和源码安装

    1.安装 jdk-8u5-linux-x64.rpm 原文链接:http://www.cnblogs.com/xsi640/p/3756995.html 先下载最新的jdk版本 文件名:jdk-8u5 ...

  10. JVM调优总结(二)-一些概念

    Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了.对于非基本类型的Java对象,其大小就值得商榷. 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有 ...