【Android开发】XML文件解析
最近在做一个项目,涉及到XML文件的解析,废话不多说,如下:
读取
1 private ArrayList<Data> readXMLLocked() { 2 File file = new File(mDirPath, mFileName); 3 if (!file.exists()) { 4 return null; 5 } 6 ArrayList list = new ArrayList<Data>(); 7 InputStream in = null; 8 try { 9 in = new FileInputStream(file); 10 XmlPullParser pullParser = Xml.newPullParser(); 11 pullParser.setInput(in, "UTF-8"); 12 int event = pullParser.getEventType(); 13 while (event != XmlPullParser.END_DOCUMENT) { 14 switch (event) { 15 case XmlPullParser.START_DOCUMENT: 16 break; 17 case XmlPullParser.START_TAG: 18 String name = pullParser.getName(); 19 ILog.d(TAG, "xmlname:" + name); 20 if (TAG_ITEM.equals(name)) { 21 int count = pullParser.getAttributeCount(); 22 Data data = new Data(); 23 for (int i = 0; i < count; i++) { 24 String attName = pullParser.getAttributeName(i); 25 if (ATT_DATA.equals(attName)) { 26 data.setmWeight(Float.valueOf(pullParser.getAttributeValue(i))); 27 } else if (ATT_TIME.equals(attName)) { 28 data.setTime(Long.valueOf(pullParser.getAttributeValue(i))); 29 } 30 } 31 list.add(data); 32 } else if (TAG_VERSION.equals(name)) { 33 34 } 35 break; 36 case XmlPullParser.END_TAG: 37 break; 38 } 39 event = pullParser.next(); 40 } 41 } catch (Exception e) { 42 e.printStackTrace(); 43 return null; 44 } finally { 45 try { 46 in.close(); 47 } catch (Exception e) { 48 e.printStackTrace(); 49 } 50 } 51 return list; 52 }
保存:
1 private synchronized boolean saveXMLLocked(ArrayList<Data> list, OutputStream outStream) { 2 try { 3 XmlSerializer serializer = Xml.newSerializer(); 4 serializer.setOutput(outStream, "UTF-8"); 5 serializer.startDocument("UTF-8", true); 6 serializer.startTag(null, TAG_IWEIHT); 7 serializer.startTag(null, TAG_VERSION); 8 serializer.text(String.valueOf(DBHelper.VERSION)); 9 serializer.endTag(null, TAG_VERSION); 10 for (Data data : list) { 11 serializer.startTag(null, TAG_ITEM); 12 serializer.attribute(null, ATT_DATA, String.valueOf(data.getWeight())); 13 serializer.attribute(null, ATT_TIME, String.valueOf(data.getTime())); 14 serializer.endTag(null, TAG_ITEM); 15 } 16 serializer.endTag(null, TAG_IWEIHT); 17 serializer.endDocument(); 18 } catch (Exception e) { 19 e.printStackTrace(); 20 return false; 21 } finally { 22 try { 23 outStream.flush(); 24 outStream.close(); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 } 29 return true; 30 }
对应的XML文件的格式如下:
1 <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> 2 <iweight> 3 <version>1</version> 4 <item data="25.0" time="1482927231388" /> 5 <item data="75.0" time="1482927234989" /> 6 <item data="48.0" time="1482927238008" /> 7 </iweight>
转载于:https://www.cnblogs.com/yanyojun/p/6230759.html
【Android开发】XML文件解析相关推荐
- Android开发--XML文件解析
开发者一般会在XML文件中定义控件,其中肯定包含控件的一些属性,下面就对这些属性做一些简单的介绍: 1)android:id---这个属性是为控件提供一个标识或者是对一个控件采用引用 2)androi ...
- Android开发历程_18(XML文件解析)
前言 本文主要介绍在Android中怎样来解析XML文件.主要采用的是SAX机制,SAX全称为Simple API for XML,它既是一种接口,也是一个软件包.作为接口,SAX是事件驱动型XML ...
- Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...
- android基础知识13:AndroidManifest.xml文件解析【转载】
注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
- Android中XML数据解析
转载请注明出处:http://blog.csdn.net/yegongheng/article/details/38296207 XML初步 今天我们来学习另一种非常重要的数据交换格式-XML.XML ...
- android实现存储,Android开发实现文件存储功能
本文实例为大家分享了Android开发实现文件存储的具体代码,供大家参考,具体内容如下 这个程序只有一个Activity, Activity中只有一个Edittext.实现的功能是在Activity销 ...
- dom4j工具类_基于DOM4J的XML文件解析类
XML文件解析分四类方式:DOM解析:SAX解析:JDOM解析:DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于ja ...
- XML文件解析-DOM4J方式和SAX方式
最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...
- XML - XML学习/XML文件解析器(C++)实现
XML - XML学习/XML文件解析器(C++)实现 XML概述 XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识.它也是元标记语言,用于定义其他与特定领域有关的, ...
- XML文件解析 (下载)
XML文件解析 (下载) main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
最新文章
- 你认识的世界与客观世界间差了N光年
- Intellij IDEA打开就闪退或关闭
- Java中映射怎么实现_我们如何在Java 9的JShell中实现映射?
- overlay网络的优势
- 【机器学习】为什么GBDT可以超越深度学习
- C#一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第100位数是多少, 用递归算法实现。...
- 初识react(二) 实现一个简版的html+redux.js的demo
- oracle Interval 分区维护与管理要点
- linux空间满了有什么问题,Linux 空间满问题分析 [ Keep Coding ]
- Advanced clustering methods (Cure, Chameleon, Rock, Jarvis-Petrich)
- 22. jQuery 遍历 - 同胞
- html5 手机uc浏览器 复制链接,清除UC手机浏览器强制在页面中加入的关键词链接...
- 四色定理java_java – 四色定理的递归算法
- 错别字检测、在线文本纠错-爱校对
- Appdata中local是文件,系统盘下的文件目录
- Unity3D发布错误:could not allocate memery:system out of memery!
- 2018蓝桥杯校选复现3
- CSS3 自定义动画(animation)
- Windows App开发之编辑文本与绘制图形
- JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil
热门文章
- CentOS7 0安装jdk + tomcat
- 渗透测试python编程之端口扫描
- cnetos6,centos7添加新网卡,系统不识别的解决办法
- 毕业设计之路(2)——初识TCP
- [Python学习记录]——Hello Python
- w2k telnet port change
- Jmeter提取响应结果中的json数据
- Android入门之基本布局
- JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈
- flutter web:lottie jssdk报错处理