XML文件是一种常用的文件格式,可以用来存储与传递数据 ,本文是XML文件序列化与解析的一个简单示例

写文件到本地,并用XML格式存储

/*** 写xml文件到本地*/private void writeXmlToLocal() {List<Person> personList = getPersonList();// 获得序列化对象XmlSerializer serializer = Xml.newSerializer();try {File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");FileOutputStream fos = new FileOutputStream(path);// 指定序列化对象输出的位置和编码serializer.setOutput(fos, "utf-8");serializer.startDocument("utf-8", true);    // 写开始 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>serializer.startTag(null, "persons");       // <persons>for (Person person : personList) {// 开始写人serializer.startTag(null, "person");    // <person>serializer.attribute(null, "id", String.valueOf(person.getId()));// 写名字serializer.startTag(null, "name");      // <name>serializer.text(person.getName());serializer.endTag(null, "name");        // </name>// 写年龄serializer.startTag(null, "age");       // <age>serializer.text(String.valueOf(person.getAge()));serializer.endTag(null, "age");     // </age>serializer.endTag(null, "person");  // </person>}serializer.endTag(null, "persons");         // </persons>serializer.endDocument();       // 结束} catch (Exception e) {e.printStackTrace();}}private List<Person> getPersonList() {List<Person> personList = new ArrayList<Person>();for (int i = 0; i < 30; i++) {personList.add(new Person(i, "wang" + i, 18 + i));}return personList;}

XML解析实现

private List<Person> parserXmlFromLocal() {try {File path = new File(Environment.getExternalStorageDirectory(), "persons.xml");FileInputStream fis = new FileInputStream(path);// 获得pull解析器对象XmlPullParser parser = Xml.newPullParser();// 指定解析的文件和编码格式parser.setInput(fis, "utf-8");int eventType = parser.getEventType();      // 获得事件类型List<Person> personList = null;Person person = null;String id;while(eventType != XmlPullParser.END_DOCUMENT) {String tagName = parser.getName();  // 获得当前节点的名称switch (eventType) {case XmlPullParser.START_TAG:       // 当前等于开始节点  <person>if("persons".equals(tagName)) { // <persons>personList = new ArrayList<Person>();} else if("person".equals(tagName)) { // <person id="1">person = new Person();id = parser.getAttributeValue(null, "id");person.setId(Integer.valueOf(id));} else if("name".equals(tagName)) { // <name>person.setName(parser.nextText());} else if("age".equals(tagName)) { // <age>person.setAge(Integer.parseInt(parser.nextText()));}break;case XmlPullParser.END_TAG:     // </persons>if("person".equals(tagName)) {// 需要把上面设置好值的person对象添加到集合中personList.add(person);}break;default:break;}eventType = parser.next();      // 获得下一个事件类型}return personList;} catch (Exception e) {e.printStackTrace();}return null;}

测试结果

public class TestCase extends AndroidTestCase {public void test() {
//      writeXmlToLocal();List<Person> personList = parserXmlFromLocal();for (Person person : personList) {Log.i("TestCase", person.toString());}}

完成

Android之XML序列化和解析相关推荐

  1. Android之Xml序列化器生成xml文件

    ①先说一下将数据导成xml的优点: 1)XML文档的内容和结构完全分离 2)互操作性强 大多数纯文本的文件格式都具有这个优点.纯文本文件可以方便地穿越防火墙,在不同操作系统上的不同系统之间通信.而作为 ...

  2. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /*** 短信的业务bean* @author Administrator ...

  3. android之XmlSerializer序列化XML(写入) android之XmlSerializer序列化XML(写入)...

    android之XmlSerializer序列化XML(写入) 分类:android_数据增删查改2011-03-03 11:497437人阅读评论(2)收藏举报 androidxmlstringen ...

  4. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  5. Android开发--详解SAX解析XML文件

    SAX技术字处理XML文件时并不是一次性把XML文件装入内存,而是一边读一边解析,因此,在解析的过程中会有几个步骤需要注意,在这里用一张图来表示解析的步骤: 在本实例中,定义了一个xml文件,其中有若 ...

  6. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

  7. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)

    在之前一篇博文中<< Android中View绘制流程以及invalidate()等相关方法分析>> ,简单的阐述 了 Android View 绘制流程的三个步骤,即: 1. ...

  8. Android向本地写入一个XML文件和解析XML文件

    在网络存储过程中有很多时候会遇到XML文件解析和使用XML保存一些信息,解析XML文件用的比较多的方法是pull解析和SAX解析,但是我一般只用pull解析,下面就向cd卡写入一个XML文件,然后再使 ...

  9. Android,XML解析

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

最新文章

  1. 10月10号面试技术总结
  2. 解决struts.xml文件提示问题
  3. arp攻击源代码(收集)
  4. html怎样做登录页面,使用HTML 5和CSS3制作登录页面完整步骤
  5. 关于js渲染网页时爬取数据的思路和全过程(附源码)
  6. java标记错误_标记电子邮件Java时出错
  7. solr 配置mysql数据源_solr data-config.xml配置文件的见解mysql数据源
  8. 利用闭包实现onclick事件传递参数
  9. 嵌入式基础认识1:存储器(如RAM、ROM和FLASH)
  10. H5项目常见问题汇总及解决方案
  11. Cadence Allegro修改字体粗细图文教程
  12. 高通平台,MSM8937/MSM8953 RF配置流程
  13. 按夏普计算机技巧,股票投资策略:怎样用夏普比率Sharpe Ratio寻找强势股
  14. 硬盘柱面损坏怎么办_硬盘扇区损坏怎么办
  15. 基于Cisco Packet Tracer的中小型网吧组网设计方案
  16. 基本概念学习(9013)---通用寄存器、机器字长、数据通路
  17. vue实现循环滚动图片
  18. 怎样查看Eclipse是32位还是64位
  19. fiddler 不同版本功能说明
  20. 图神经网络-随机游走

热门文章

  1. 我不看好data2vec这类多模态融合的研究
  2. 如何融合深度学习特征向量?
  3. NIPS’20 Spotlight | 精准建模用户兴趣,广告CTR预估准确率大幅提升!
  4. 在深度学习顶会ICLR 2020上,Transformer模型有什么新进展?
  5. Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】
  6. 领域应用 | 智能导购?你只看到了阿里知识图谱冰山一角
  7. ImportError: libSM.so.6: cannot open shared object file: No such file or dir
  8. 面向知识图谱的信息抽取
  9. 第一个关于中式菜谱的智能问答机器人小程序正式上线啦
  10. HTTP的请求报文与响应报文