Android开发笔记——序列化和解析XML文件
来源:互联网 发布:单片机lcd液晶显示 编辑:程序博客网 时间:2024/06/06 02:16
有时候,在android上需要使用xml存储数据,那又该怎样保存和读取xml文件呢?
1、序列化文件
举个例子,要保存成如下的xml文件格式:
<infos><student><name></name><sex></sex><age></age></student></infos>
代码如下:
<span style="white-space:pre"></span>private boolean storeStudent2Local() {try {// 创建序列化对象XmlSerializer serializer = Xml.newSerializer();FileOutputStream fos = new FileOutputStream(path);serializer.setOutput(fos, "utf-8");<span style="white-space:pre"></span>//设置输出流及其编码方式serializer.startDocument("utf-8", true);// 文档的开始serializer.startTag(null, "infos");<span style="white-space:pre"></span>//节点的开始for (Student student : listStudent) {serializer.startTag(null, "student");serializer.startTag(null, "name");serializer.text(student.getName());serializer.endTag(null, "name");serializer.startTag(null, "sex");serializer.text(student.getSex());serializer.endTag(null, "sex");serializer.startTag(null, "age");serializer.text(String.valueOf(student.getAge()));serializer.endTag(null, "age");serializer.endTag(null, "student");}serializer.endTag(null, "infos");serializer.endDocument();// 文档结束return true;} catch (Exception e) {e.printStackTrace();}return false;}
2、读取xml文件
读取文件也是从上到下,一个节点一个节点得读的
<span style="white-space:pre"></span>private boolean restoreStudentFromLocal() {try {XmlPullParser parser = Xml.newPullParser();<span style="white-space:pre"></span>//获取xml解析器parser.setInput(new FileInputStream(path), "utf-8");<span style="white-space:pre"></span>//设置输入流以及解码方式int eventType = parser.getEventType();listStudent.clear();Student stu = null;String tagName = null;while (eventType != XmlPullParser.END_DOCUMENT) {tagName = parser.getName();switch (eventType) {case XmlPullParser.START_TAG:if ("infos".equals(tagName)) {<span style="white-space:pre"></span>//如果头结点<infos>,就创建学生集合listStudent = new ArrayList<Student>();} else if ("student".equals(tagName)) {stu = new Student();} else if ("name".equals(tagName)) {stu.setName(parser.getText());} else if ("sex".equals(tagName)) {stu.setSex(parser.getText());} else if ("age".equals(tagName)) {stu.setAge(Integer.parseInt(parser.getText()));}break;case XmlPullParser.END_TAG:<span style="white-space:pre"></span>//假如是</student>节点,就把student加入到集合中if ("student".equals(tagName)) {listStudent.add(stu);}break;default:break;}eventType = parser.next();<span style="white-space:pre"></span>//解析下一个节点}refreshStudentList();return true;} catch (Exception e) {e.printStackTrace();}return false;}
0 0
- Android开发笔记——序列化和解析XML文件
- android XML文件解析和序列化
- Android开发之基础-------XML文件的序列化和解析
- Android中XML文件的序列化和解析
- Android学习笔记之—XML文件的序列化
- android开发学习(三)——sharedPreference,xml文件序列化和反序列
- xml 文件序列化和解析
- Android中xml解析和序列化
- Android之XML序列化和解析
- Android---40---实现XMl文件的序列化与解析
- Android学习笔记13——XML文件解析
- Android学习笔记(九)——XML文件解析
- android基础笔记——解析xml文件
- Android学习笔记之—采用Pull解析XML文件
- 安卓xml序列化和pull解析笔记
- XML 文件解析 -- MarsChen Android 开发教程学习笔记
- android开发笔记之PULL解析xml文件
- 安卓开发-xml的序列化和解析实例
- POJ 2184 Cow Exhibition (处理负值的01背包)
- Java线程简介
- 错题(二)
- 防查壳、防杀软误报——手动修改加UPX壳的应用程序
- Reflect
- Android开发笔记——序列化和解析XML文件
- 相似图片搜索的原理(二)
- C++实现顺序表
- 解决 驱动创建设备节点时 权限为 root只读只写 的问题
- Minimum Path Sum
- C++Primer第五版 1.4.4节练习
- Java_jdbc 基础笔记之十三 数据库连接(DAO)
- 汇编语言基础学习
- 轻量级.Net开源日志组件--AHCT.Log.NLogger