1.读取XML文件

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

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

  1. /**
  2. * 获取xml数据
  3. * */
  4. public List<Person> getPersons(InputStream xml) throws Exception{
  5. List<Person>persons=null;
  6. Person person=null;
  7. XmlPullParser pullParser=Xml.newPullParser();
  8. //为pull解析器设置要解析的xml数据,第一个参数为输入流,第二个为该数据的编码格式
  9. pullParser.setInput(xml, "UTF-8");
  10. int envnt =pullParser.getEventType();
  11. while (envnt!=XmlPullParser.END_DOCUMENT) {
  12. switch (envnt) {
  13. case XmlPullParser.START_DOCUMENT: //开始文件时创建实例存储数据
  14. persons=new ArrayList<Person>();
  15. break;
  16. case XmlPullParser.START_TAG : //标签开始,读取数据部分
  17. if("person".equals(pullParser.getName())){
  18. int id=new Integer(pullParser.getAttributeValue(0));
  19. person=new Person();
  20. person.setId(id);
  21. }
  22. if("name".equals(pullParser.getName())){
  23. String name=pullParser.nextText();
  24. person.setName(name);
  25. }
  26. if("age".equals(pullParser.getName())){
  27. Integer age=new Integer(pullParser.nextText());
  28. person.setAge(age);
  29. }
    30 pullParser.next(); //跳到到下一个标签
  30. break;
  31. case XmlPullParser.END_TAG: //标签结束部分
  32. if("person".equals(pullParser.getName())){
  33. //建解析出来的数据保存在List中,后置空person
  34. persons.add(person);
  35. person=null;
  36. }
  37. break;
  38. }
  39. }
  40. return persons;
  41. }

2:将数据写入xml文件

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

  1. /**
  2. * 保存xml数据
  3. * */
  4. public void sava(List<Person> persons ,OutputStream out)throws Exception{
  5. //得到序列化器
  6. XmlSerializer serializer=Xml.newSerializer();
  7. //见文件写入序列化器当中
  8. serializer.setOutput(out, "UTF-8");
  9. //创建xml头文件
  10. serializer.startDocument("UTF-8", true);//true 表示该文件能不能单独存在
  11. //创建标签头
  12. serializer.startTag(null, "persons");//参数以为该文件的命名空间,参数二为标签名
  13. //创建标签尾
  14. for(Person person:persons){ //循环读取person标签的数据
  15. serializer.startTag(null, "person");
  16. serializer.attribute(null, "id", person.getId().toString());
  17.  
  18. serializer.startTag(null, "name");
  19. serializer.text(person.getName().toString());
  20. serializer.endTag(null, "name");
  21.  
  22. serializer.startTag(null, "age");
  23. serializer.text(person.getAge().toString());
  24. serializer.endTag(null, "age");
  25. //创建结束文档
  26. serializer.endDocument();
  27. out.flush();
  28. out.close();
  29. }
  30. }

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. Java常用类(String、StringBuffer、Math、Arrays)

    1.String 操作对象时会重新分配堆内存,栈内存的引用会重新指向新的堆内存 2.StringBuffer(字符串缓存区) 操作的对象一直都是一个 3.Math Math.max(xx,xx); M ...

  2. 树莓派加入定时任务实现花生壳定时重启(linux的定时任务)

    由于花生壳在linux下不稳定,联系开机一个星期左右会挂掉,所以要使用定时任务实现每小时刷新一次/启动一次. 使用的是linux下的定时任务crontab去实现. 实现步骤: 1.编辑/etc/cro ...

  3. 模拟学信网登录,Cookie 序列化,在反序列化之后不能用的问题

    昨天和今天在模拟学信网登录,然后抓取用户的信息数据的时候发现一直登录不成功, 登录页面,https://account.chsi.com.cn/passport/login?service=http% ...

  4. 如何将std::string转int,double? (C/C++) (C) (template)

    http://www.cnblogs.com/oomusou/archive/2008/08/01/525647.html http://blog.sina.com.cn/s/blog_a843a88 ...

  5. Transaction Manager Maximum Timeout

    TransactionManager.MaximumTimeout是个只读的属性, 默认只有10分钟, 要想修改它必须通过machine.config来修改. 为了单个应用而去修改这个值是不合适的. ...

  6. Android如何判断一个应用在运行

    在一个应用中,或一个Service .Receiver中有时候需要判断一个应用是否正在运行,以便进行一些相关的处理,这个时候我们需要得到一个ActivityManager,这个Manager顾名思意就 ...

  7. 关于webapi 返回的类型的笔记

    经过测试发现使用IE浏览器返回的数据是json,而使用Firefox和Chrome返回的则为xml,经研究发现IE在发生http请求时请求头accpet节点相比Firefox和Chrome缺少&quo ...

  8. QM04-生产中的QM

    集成的计划 生产过程中的生产工序和检验工序逐渐变得更为相互依赖或者说被组合在一起.从而使来自生产和质量检验领域的工作小组共同创建工艺流程. 检验工序 可以把QM检验特性集成到生产计划(PP)模块的工作 ...

  9. openssl生成rsa公私钥

    1.生成私钥pem,  执行命令openssl genrsa -out rsa_private_key.pem 1024 2.生成公钥,执行命令openssl rsa -in rsa_private_ ...

  10. hdu 4494 Teamwork 最小费用最大流

    Teamwork Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4494 ...