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

一、向SD卡中写入一个XML文件:

/*** 向SD卡写入一个XML文件* * @param v*/public void savexml(View v) {try {File file = new File(Environment.getExternalStorageDirectory(),"persons.xml");FileOutputStream fos = new FileOutputStream(file);// 获得一个序列化工具XmlSerializer serializer = Xml.newSerializer();serializer.setOutput(fos, "utf-8");// 设置文件头serializer.startDocument("utf-8", true);serializer.startTag(null, "persons");for (int i = 0; i < 10; i++) {serializer.startTag(null, "person");serializer.attribute(null, "id", String.valueOf(i));// 写姓名serializer.startTag(null, "name");serializer.text("张三" + i);serializer.endTag(null, "name");// 写性别serializer.startTag(null, "gender");serializer.text("男" + i);serializer.endTag(null, "gender");// 写年龄serializer.startTag(null, "age");serializer.text("1" + i);serializer.endTag(null, "age");serializer.endTag(null, "person");}serializer.endTag(null, "persons");serializer.endDocument();fos.close();Toast.makeText(MainActivity.this, "写入成功", 0).show();} catch (Exception e) {e.printStackTrace();Toast.makeText(MainActivity.this, "写入失败", 0).show();}}

1、设置XML文件保存的地址,2、获得一个序列化工具,3、写XML文件的头,4、循环写入信息。

最后得到的XML文件

二、解析本地XML文件

/*** 读取SD卡中的XML文件,使用pull解析* * @param v*/public void readxml(View v) {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(); // 获得事件类型String id = null;String name = null;String gender = null;String age = null;while (eventType != XmlPullParser.END_DOCUMENT) {String tagName = parser.getName(); // 获得当前节点的名称switch (eventType) {case XmlPullParser.START_TAG: // 当前等于开始节点 <person>if ("persons".equals(tagName)) { // <persons>} else if ("person".equals(tagName)) { // <person id="1">id = parser.getAttributeValue(null, "id");} else if ("name".equals(tagName)) { // <name>name = parser.nextText();}else if ("gender".equals(tagName)) { // <age>gender = parser.nextText();} else if ("age".equals(tagName)) { // <age>age = parser.nextText();}break;case XmlPullParser.END_TAG: // </persons>if ("person".equals(tagName)) {Log.i(TAG, "id---" + id);Log.i(TAG, "name---" + name);Log.i(TAG, "gender---" + gender);Log.i(TAG, "age---" + age);}break;default:break;}eventType = parser.next(); // 获得下一个事件类型}} catch (Exception e) {e.printStackTrace();}finally{}

1、获取要解析XML文件的地址,2、获得pull解析工具,3、根据标签的不同判断并保存信息。

在解析过程中遇到一个问题,就是在解析完了之后,调用fis.close()函数时,会报bad file number的错误,检查了很久才发现是这句话的问题。

Android向本地写入一个XML文件和解析XML文件相关推荐

  1. (C++)将数据库文件导出XML文件以及解析XML文件生成数据库文件的处理方法

    将数据库文件导出XML文件以及解析XML文件生成数据库文件的处理方法 思路:将数据库所有要导出的信息通过sql语句得到,存储到结构体中,然后将结构体的内容通过自定义的xml格式导出. 此方法使用的是T ...

  2. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  3. python【模块】xml.etree.ElementTree 解析 xml

    pytho 模块 xml.etree.ElementTree 解析 xml 文章目录 pytho 模块 xml.etree.ElementTree 解析 xml 1. 什么是 XML? 2. Elem ...

  4. 第六章、epub文件处理 -- 解析container文件与.opf文件

    2019独角兽企业重金招聘Python工程师标准>>> 第六章.epub文件处理 -- 解析container文件与.opf文件 这一章我们会接着第三章结尾介绍的FBReaderAp ...

  5. 如何反编译apk文件并解析.class文件查看Java源代码

    如何反编译apk文件并解析.class文件查看Java源代码 前期工作:先准备好反编译需要用到的工具:下载链接. 1.把下载好的工具解压,得到下面这三个文件 2.配置环境变量到path(apktool ...

  6. python 之模块之 xml.dom.minidom解析xml

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...

  7. 将android程序写入内存,android中将数据写入手机内存和sdcard中的文件

    在android中一般有两种方式: 第一种是写入手机内存的文件,这种方式,文件的存取路径都是在应用包下的 files 文件夹下,其路径是固定的,并不受程序员控制的, FileOutputStream ...

  8. android xml解析demo,Android解析自定义xml文件--Sax解析xml文件,测试demo(方案二)...

    转载请注明出处:http://blog.csdn.net/droyon/article/details/9346657 Sax解析xml 以下是测试Demo 运行程序类 public class Te ...

  9. android向本地写入缓存

    写入缓存方法: /*** 用于做本地缓存,T需要覆盖equals()方法和hashCode()方法*/ public class BufferStore<T extends Serializab ...

最新文章

  1. poj1741(树的点分治)
  2. python数据库操作批量sql执行_使用Python批量修改数据库执行Sql文件
  3. TiDB 官方设计文档翻译(一)
  4. 第1-10个xhtml程序
  5. IOS线程学习(一)
  6. 系统分析与控制_质量体系文件:测量系统分析控制程序
  7. Hadoop HIVE 创建表
  8. MIDP应用程序的属性
  9. 717. 1比特与2比特字符
  10. Java基本数据类型之char
  11. QT开发的即时通讯聊天软件
  12. 消防管道标志色号_消防标志的起步问题
  13. 【软件质量】软件质量分析总结报告
  14. visio跨职能流程图带区背景及大小及改变格式 (转)
  15. 一分钟教你配置DHCP服务,超级简单一看就会!!!!!
  16. 深度学习是什么?应用在哪些方向?
  17. 冯大辉Twitter每日推荐一位推友计划推友列表
  18. runtime-compiler和runtime-only的区别
  19. MTK原厂,MT6771参考设计最新资料
  20. 计算机进入休眠状态后,电脑进入休眠状态后自动重启怎么办

热门文章

  1. swift. 扩展类添加属性_Swift iOS-如何动态地向现有类添加属性然后访问它们
  2. TCP/IP / IP 头
  3. C51对标准C语言的扩展 / 数据类型
  4. hadoop yarn 获取日志_赵丽颖固然漂亮,可这份Hadoop核心教程也不差啊!
  5. Arduino--蓝牙
  6. 英伟达账号登录邮箱验证收不到_【硬核教学】解决登录230锁定
  7. altium designer无法创建工程_前端工程化之开发脚手架及封装自动化构建
  8. 能源36号文解读_中国能源报
  9. logback的使用和logback.xml详解[转]
  10. left edge algorithm.