11.Android-Xml读写
android中写XML时,需要用到XmlSerializer类
解析XML时,则需要用到XmlPullParser类
1.XmlSerializer类介绍
通过Xml.newSerializer()来获取XmlSerializer
XmlSerializer常用方法如下所示:
void setOutput(OutputStream os, String encoding);
//设置要写入的XML的文件位置,以及encoding编码格式
//比如:
//File file = new File(Environment.getExternalStorageDirectory(), "text.xml"); //xmlSerializer.setOutput(new fileOutputStream(file), "utf-8"); void startDocument(String encoding, Boolean standalone);
//设置文档开头描述,比如:" <?xml version="1.0" encoding="utf-8" standalone="yes"?>"
// standalone:表示该XML是否是独立的,默认为true,如果填为false,则表示该XML被外部文件DTD约束 startTag(String namespace, String name);
//写入开始元素标签 endTag(String namespace, String name);
//写入结束元素标签 attribute(String namespace, String name, String value);
//往元素标签里写属性(name="value"),比如<name id="123">
text(String text);
//往元素里添加内容,比如: <name id="123">张三</name>
示例代码如下:
private void writePersonXml(){ XmlSerializer serializer = Xml.newSerializer(); try {
serializer.setOutput(openFileOutput("persons.xml", MODE_PRIVATE), "utf-8");
serializer.startDocument("utf-8", true); serializer.startTag(null,"persons"); //创建两个成员
serializer.startTag(null,"person");
serializer.attribute(null, "id", ""); //添加编号 serializer.startTag(null,"姓名");
serializer.text("张三");
serializer.endTag(null,"姓名"); serializer.startTag(null,"age");
serializer.text("");
serializer.endTag(null,"age"); serializer.endTag(null,"person"); serializer.startTag(null,"person");
serializer.attribute(null, "id", ""); //添加编号 serializer.startTag(null,"姓名");
serializer.text("李四");
serializer.endTag(null,"姓名"); serializer.startTag(null,"age");
serializer.text("");
serializer.endTag(null,"age"); serializer.endTag(null,"person"); serializer.endTag(null,"persons");
serializer.endDocument(); //结束文档,并将内容写入文件 } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
运行后,生成persons.xml:
接下来,我们便通过XmlPullParser来解析persons.xml
2.XmlPullParser介绍
通过Xml. newPullParser()来获取XmlPullParser;
XmlPullParser常用方法如下:
void setInput(InputStream inputStream, String inputEncoding);
//设置要解析的文件以及编码 int getEventType();
//获取当前事件类型,返回的类型有START_DOCUMENT(文档开头)、START_TAG (元素开头)、END_TAG(元素结束)、TEXT (内容)、 END_DOCUMENT(文档结束) int next();
//获取下个事件类型. 返回的类型和getEventType()一样. getName(); //获取当前元素名 getTextCharacters(); //获取当前内容(当getEventType ()==TEXT时通过这个来获取元素内容) nextText(); //获取下个内容(当getEventType ()==START_TAG时通过这个来获取元素内容)
示例代码如下:
private void parsePersonsXml(){ XmlPullParser pullParser = Xml.newPullParser(); try {
pullParser.setInput(this.openFileInput("persons.xml"), "utf-8");
String name = null;
String age = null;
String id = null; int eventType = pullParser.getEventType(); while(eventType!=pullParser.END_DOCUMENT)
{
switch (eventType) {
case XmlPullParser.START_TAG: if("person".equals( pullParser.getName())){ id = pullParser.getAttributeValue(null, "id"); //获取编号,并初始化内容
name =null;
age = null; }else if("姓名".equals(pullParser.getName())){ name = pullParser.nextText(); //获取姓名 }else if("age".equals(pullParser.getName())){ age = pullParser.nextText(); //获取年龄 }
break; case XmlPullParser.END_TAG: if("person".equals( pullParser.getName())){ System.out.println("person : id="+id+" 姓名="+name+" 年龄="+age); //打印信息 } break;
} eventType = pullParser.next();
} } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
运行打印:
11.Android-Xml读写的更多相关文章
- 在android中读写文件
在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外 ...
- 二、Android XML数据解析
XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- Android xml 格式 随笔
打包的时候Android xml文件会由字符格式(utf-8编码)转换为二进制格式.具体如:http://blog.csdn.net/jiangwei0910410003/article/detail ...
- android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 三: 把复杂对象转换成 xml
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 二: 把对象转换成xml
前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...
随机推荐
- Treap基本用法总结
Treap=Tree+Heap 起名的人非常有才 Treap是啥? 一棵二叉搜索树可能退化成链,那样各种操作的效率都比较低 于是可爱的Treap在每个节点原先值v的基础上加了一个随机数rnd,树的形 ...
- Math.Atan2 方法
返回正切值为两个指定数字的商的角度. public static double Atan2 ( double y, double x ) 参数 y 点的 y 坐标. x 点的 x 坐标. 返回值 角 ...
- Dynamics 365 CRM 在 Connected Field Service 中部署 IoT Central (二)- 匹配设备
上个blog中介绍了我们怎么去部署IoT central和 connected field service做连接. 我们这次介绍怎么把IoT设备在CRM中怎么去注册. 首先我们打开devices,再选 ...
- python实例:从excel读取股票代码,爬取股票信息写到代码后面的单元格中
关键词:爬虫.python.request.接口.excel处理 思路: 1.首先准备好excel文档,把股票代码事先编辑进去. 2.脚本读取文档,依次读出股票代码到指定站点发起请求获取股票信息 3. ...
- 同一个环境同时使用python2和python3的方法
1.首先安装好p2和p3,配置好环境变量.在CMD内执行python返回版本号,返回结果根据配置的环境变量而定,如果p2的环境变量配置在前面,则返回p2的版本号,反之则p3 2.然后把各版本目录下的p ...
- java反射API
反射主要对象 Class Constructor Field Method API-Class 获取Class对象 Object.getClass() className.class Class.fo ...
- koa中间执行机制
start 基于 koa 2.11 按以下流程分析: const Koa = require('koa'); const app = new Koa(); const one = (ctx, next ...
- Unreal Engine 4 蓝图完全学习教程(四)—— 变量与计算
Ⅰ.值的基础类型 ①文本.字符串(Text.String):文本类型的值. ②整型.浮点型(Int.Float):数字类型的值. ③布尔型(Bool):表示“真或假”二者选其一的状态. Ⅱ.加法运算 ...
- 初探 Node.js 框架:eggjs (环境搭配篇)
eggjs 是一个优秀的 Node.js 框架 概述:为什么标题上说 eggjs 是一个优秀的 Node.js 框架(可跳过)? 换言之,我们为什么选择 eggjs 进行开发而不是之前初学时使用的 E ...
- mod3 如何用硬件实现
今天接到Qualcom 的电话面试,表现很一般.Qualcom 不愧是一流的IC 设计公司,问得问题非常基础,但是非常深入! 其中问了一个如何实现模3 的问题.没有回答上来. 后来想了一下,其实非常简 ...