1.读取XML文件

参数xml是建含xml数据的输入流,List<Person> persons用于存储xml流中的数据。

XmlPullParser类的几个方法:next(),nextToken() ,getEventType().

 /**
* 获取xml数据
* */
public List<Person> getPersons(InputStream xml) throws Exception{
List<Person>persons=null;
Person person=null;
XmlPullParser pullParser=Xml.newPullParser();
//为pull解析器设置要解析的xml数据,第一个参数为输入流,第二个为该数据的编码格式
pullParser.setInput(xml, "UTF-8");
int envnt =pullParser.getEventType();
while (envnt!=XmlPullParser.END_DOCUMENT) {
switch (envnt) {
case XmlPullParser.START_DOCUMENT: //开始文件时创建实例存储数据
persons=new ArrayList<Person>();
break;
case XmlPullParser.START_TAG : //标签开始,读取数据部分
if("person".equals(pullParser.getName())){
int id=new Integer(pullParser.getAttributeValue(0));
person=new Person();
person.setId(id);
}
if("name".equals(pullParser.getName())){
String name=pullParser.nextText();
person.setName(name);
}
if("age".equals(pullParser.getName())){
Integer age=new Integer(pullParser.nextText());
person.setAge(age);
}
30 pullParser.next(); //跳到到下一个标签
break;
case XmlPullParser.END_TAG: //标签结束部分
if("person".equals(pullParser.getName())){
//建解析出来的数据保存在List中,后置空person
persons.add(person);
person=null;
}
break;
}
}
return persons;
}

2:将数据写入xml文件

out为需要存储的xml数据类型的数据,可以存储进xml的数据类型可以是List<Person>中的。也可以是其他类型的数据。

 /**
* 保存xml数据
* */
public void sava(List<Person> persons ,OutputStream out)throws Exception{
//得到序列化器
XmlSerializer serializer=Xml.newSerializer();
//见文件写入序列化器当中
serializer.setOutput(out, "UTF-8");
//创建xml头文件
serializer.startDocument("UTF-8", true);//true 表示该文件能不能单独存在
//创建标签头
serializer.startTag(null, "persons");//参数以为该文件的命名空间,参数二为标签名
//创建标签尾
for(Person person:persons){ //循环读取person标签的数据
serializer.startTag(null, "person");
serializer.attribute(null, "id", person.getId().toString()); serializer.startTag(null, "name");
serializer.text(person.getName().toString());
serializer.endTag(null, "name"); serializer.startTag(null, "age");
serializer.text(person.getAge().toString());
serializer.endTag(null, "age");
//创建结束文档
serializer.endDocument();
out.flush();
out.close();
}
}

Android:Xml(读取与存储)的更多相关文章

  1. Android课程---关于数据存储的学习

    activity_data1.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  2. Android应用开发SharedPreferences存储数据的使用方法

    Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...

  3. 67.Android中的数据存储总结

    转载:http://mp.weixin.qq.com/s?__biz=MzIzMjE1Njg4Mw==&mid=2650117688&idx=1&sn=d6c73f9f04d0 ...

  4. Android笔记——Android中数据的存储方式(一)

    Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...

  5. 18.Android之SharedPreferences数据存储学习

    SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...

  6. Android五种数据存储方式

    android 五种数据存储 :SharePreferences.SQLite.Contert Provider.File.网络存储 Android系统提供了四种存储数据方式.分别为:SharePre ...

  7. Android开发:SharedPreferences 存储数据、获取数据

    Android开发:SharedPreferences 存储数据.获取数据 email:chentravelling@163.com 开发环境:win7 64位,Android Studio. 关于S ...

  8. 【Mark】Android应用开发SharedPreferences存储数据的使用方法

    Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...

  9. Android中的数据存储(二):文件存储 2017-05-25 08:16 35人阅读 评论(0) 收藏

    文件存储 这是本人(菜鸟)学习android数据存储时接触的有关文件存储的知识以及本人自己写的简单地demo,为初学者学习和使用文件存储提供一些帮助.. 如果有需要查看SharedPreference ...

随机推荐

  1. linux 下安装apache 快速教程

    最近自学linux,看鸟哥的文章.提到了apache,所以在虚拟机redhat 5下安装了一把, 结合国内外文章写下快速可行的教程: --------------------------------- ...

  2. SQLite使用事务更新—by command

    public void SaveToDB(DataTable dt) { /* todo:sqlite没有提供批量插入的机制,需要通过事务处理 更新所有数据 * http://www.cnblogs. ...

  3. Call me, maybe?

    Hey, I just met you, and this is crazy, but here's my number so call me, maybe? @Test public void te ...

  4. Zabbix3.0完整部署

    0. 准备工作 0.1 初始化 #!/bin/sh yum clean all systemctl stop firewalld.service systemctl disable firewalld ...

  5. oracle中extents存在的理由

    extents的特性:1:一个extent由相连的多个blocks组成,多个extents组成一个segment,2:oracle在为segment分配空间时,是以extent为单位因此extents ...

  6. Cocos2d-x——Cocos2d-x 屏幕适配总结

    本张图以iPhone5为例子,并且采用ResolutionNoBorder的绘制方式(这种方式就是会在原图的基础上出现裁切,一部分图片会显示到屏幕外边去,如AEHD和FBCG就是显示到屏幕外边的内容) ...

  7. 【M15】了解异常处理(exception handling)的成本

    1.为了在运行期处理异常,程序必须做大量额外的工作.比如,即使抛出异常,也必须保证离开作用域的栈上对象执行析构方法.因此,必须记录try语句的进入点和离开点,记录catch语句能够处理的异常等.这就意 ...

  8. Struts2 学习笔记 11 Result part2

    之前学习了result type 和global result 我们现在来说一下 1.Dynamic Result动态结果集.先来看一下小项目的目录 首页的两个链接访问user/user?type=1 ...

  9. day03 Java基础

    1.面试题 (1)short s=1;s=s+1; (2)short s=1;s+=1; 上面两行代码有没有问题,如果有,哪里有问题? 答:第一个有问题,s+1是int类型的值,赋值给short的s, ...

  10. IOC(依赖注入)原理

    IoC,直观地讲,就是容器控制程序之间的关系,而非传统实现中,由程序代码直接操控.这也就是所谓"控制反转"的概念所在.控制权由应用代码中转到了外部容器,控制权的转移是所谓反转.Io ...