android——写xml
在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的更多相关文章
- Android -- 写xml到SD卡中
信息类 private ...
- 不可不知的 Android strings.xml 那些事
相信 strings.xml 已经是大家在 Android 开发中最熟悉的文件之一了,但其实它也有很多需要注意的地方和一些小技巧,知道了这些可以让你的 Android 应用更加规范易用,大家来看看吧. ...
- Android,XML解析
XML解析三种方式 DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树.检索所需的数据: 简单直观,但需要将文档读取到内存,并不太适合移动设备: SAX ...
- [android] AndroidManifest.xml 详解
第1部分 标签库+包路径+版本控制 <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...
- Android 生成xml文件及xml的解析
1.生成xml文件的两种方式 (1)采用拼接的方式生成xml(不推荐使用) (2)利用XmlSerializer类生成xml文件 package com.example.lucky.test52xml ...
- android 写文件到sd卡问题小记
android 写文件到sd卡问题小记 事情是这样子的.... 这天我开始编写项目调试工具,高大上不?-----其实就是记录实时网络请求和崩溃日志相关等的小工具(此处一个会心的微笑). 然后我是这样写 ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- 使用XmlWriter写Xml
假定创建了XmlWriter的实例变量xmlWriter,下文中将使用此实例变量写Xml 1.如何使用XmlWriter写Xml文档声明 ? // WriteStartDocument方法可以接受一个 ...
- Android之XML序列化和解析
XML文件是一种常用的文件格式,可以用来存储与传递数据 ,本文是XML文件序列化与解析的一个简单示例 写文件到本地,并用XML格式存储 /** * 写xml文件到本地 */ private void ...
随机推荐
- redis研究记录
1 redis安装 wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz cd redis-st ...
- 机器学习笔记(三)- from Andrew Ng的教学视频
week four: Non-linear hypotheses:Neural Networks -->x1 and x2 x1 XNOR x2 ->a1->x1 and x2;a2 ...
- Hibernate 多对一
Hibernate的many-to-one 关联. 具体看配置文件: <?xml version="1.0"?> <!DOCTYPE hibernate-mapp ...
- CentOS Linux使用crontab运行定时任务详解
参考博文: (总结)CentOS Linux使用crontab运行定时任务详解
- bash有空格的文件名
http://www.keakon.net/2011/10/20/bash%E4%B8%8B%E5%A4%84%E7%90%86%E5%8C%85%E5%90%AB%E7%A9%BA%E6%A0%BC ...
- 06-C语言运算符2
目录: 一.类型转换 二.条件运算符 三.逗号运算符 四.运算符优先级 回到顶部 一.类型转换 1.类型升级,浮点型高于整型,长整型高于整型,有符号与无符号取有符号. 2.在C语言中,类型转换没有提示 ...
- perl 5.22手动安装Mysql DBI和DBD
mysql 手动安装DBI 和DBD: DBI版本: [root@dr-mysql01 DBD-mysql-4.033]# perl -MDBI -le 'print $DBI::VERSION;' ...
- myeclipse自动生成注释
myeclipse自动生成注释 在使用Eclipse编写Java代码时,自动生成的注释信息都是按照预先设置好的格式生成的,例如其中author的属性值. 我们可以在Eclipse中进行设置自己希望显示 ...
- AsyncTask简单入门
关系: java.lang.Object ↳ android.os.AsyncTask<Params, Progress, Result> 概述: AsyncTask是Andr ...
- android的animator
3.0 以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这 ...