android xml操作
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer; import android.util.Log;
import android.util.Xml; import com.itheima27.xmlparserserializer.entities.Person; public class XmlUtils { private static final String TAG = "XmlUtils"; /**
* 把数据以xml形式写到本地
*/
public void writeToLocal() throws Exception { List<Person> personList = new ArrayList<Person>();
for (int i = 0; i < 30; i++) {
personList.add(new Person(i, "王" + i, 20 + i));
} XmlSerializer serializer = Xml.newSerializer(); // 创建Xmlserializer的对象
// 指定序列化对象输出的流
FileOutputStream fos = new FileOutputStream("/mnt/sdcard/person.xml");
serializer.setOutput(fos, "utf-8"); serializer.startDocument("utf-8", true); // 写xml头 serializer.startTag(null, "persons"); // 开始的根节点 for (Person person : personList) {
serializer.startTag(null, "person");
serializer.attribute(null, "id", String.valueOf(person.getId())); // 写人的姓名
serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name"); // 写人的年龄
serializer.startTag(null, "age");
serializer.text(String.valueOf(person.getAge()));
serializer.endTag(null, "age"); serializer.endTag(null, "person");
} serializer.endTag(null, "persons"); // 结束的根节点 serializer.endDocument(); // 标记xml输出完毕
} /**
* 从本地文件解析xml数据
*/
public void parserXmlFromLocal() throws Exception {
// 创建Pull解析器对象
XmlPullParser parser = Xml.newPullParser();
// 指定解析的文件
FileInputStream fis = new FileInputStream("/mnt/sdcard/person.xml");
parser.setInput(fis, "UTF-8"); int eventType = parser.getEventType(); // 获得解析器的第一个事件类型 List<Person> personList = null;
Person person = null;
String name; while(eventType != XmlPullParser.END_DOCUMENT) { // 如果事件类型不等于结束的类型, 继续循环
String tagName = parser.getName(); // 获得当前节点的名称 // 解析数据
switch (eventType) {
case XmlPullParser.START_TAG: // 代表开始节点 <persons> if("persons".equals(tagName)) {
// 初始化集合
personList = new ArrayList<Person>();
} else if("person".equals(tagName)) {
person = new Person();
person.setId(Integer.valueOf(parser.getAttributeValue(null, "id")));
} else if("name".equals(tagName)) {
name = parser.nextText(); // 当前是<name> 节点 nextText是取<name> 后边的值
person.setName(name);
} else if("age".equals(tagName)) {
person.setAge(Integer.parseInt(parser.nextText()));
}
break;
case XmlPullParser.END_TAG: // 代表结束节点 </person>
if("person".equals(tagName)) { // 当前是</person>
// 把上面person的对象添加到集合中
personList.add(person);
}
break;
default:
break;
} eventType = parser.next(); // 赋值下一个事件类型
} if(personList != null) {
for (Person p : personList) {
Log.i(TAG, p.toString());
}
}
}
}
android xml操作的更多相关文章
- android XMl 解析神奇xstream 二: 把对象转换成xml
前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...
- Android权限操作之uses-permission详解
本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...
- 二、Android XML数据解析
XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- LINQ系列:LINQ to XML操作
LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...
- T-Sql(五)xml操作
t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...
- XML格式示例 与 XML操作(读取)类封装
header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...
- 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...
随机推荐
- 三步将Node应用部署到Heroku上 --转载
Heroku是一个提供快速部署服务的云平台.支持Node,Ruby,Java,PHP,Python,Go多种语言,今天体验了下,简直不要太爽.下面简单的介绍一下. 首先还是要注册一个账号:https: ...
- 【python2.7】raw_input()和input()区别及用法
版权声明:本文为博主原创文章,未经博主允许不得转载. 一.函数介绍1. input([prompt]) 等同于eval(raw_input([prompt])),这个函数不会捕捉用户输入上的错误,如果 ...
- Nginx安全配置研究
x00 测试环境 ? 1 2 3 操作系统:CentOS6.5 Web服务器:Nginx1.4.6 Php版本:Php5.4.26 0x01 Nginx介绍 nginx本身不能处理PHP,它只是个we ...
- The differences between Java EE components and "standard" Java classes
https://docs.oracle.com/javaee/7/tutorial/overview003.htm ava EE components are written in the Java ...
- Ubuntu 安装和配置redis数据库
Ubuntu 14.04下安装和配置redis数据库 小编现在在写一个分布式爬虫,要用到这个数据库,所以分享一下小编是如何安装和配置的,希望对大家有帮助. 工具/原料 Ubuntu 系统电脑一台 ...
- EntityValidationErrors
关于如何查看 EntityValidationErrors 详细信息的解决方法 我们在 EF 的编程中,有时候会遇到这样一个错误: 但是,按照他的提示 "See 'EntityValidat ...
- SQL 将一列多行数据合并为一行 FOR XML PATH
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻.现在我要介绍的FOR XML PATH的"另类"用法. 首先,我们先来看看它的正常用法 ...
- linux库
将库函数打包成一个单元使之能够在运行时被多个进程共享的技术,这种技术能够节省磁盘空间和RAM. 一. 静态库:1.概念: 静态库就是一些目标文件的集合,以.a结尾.静态库在程序链接的时候使用, ...
- 用audacity制作循环背景音乐
用audacity制作循环音乐: 1,将音乐前面一段剪切,粘贴到结尾. 2,选择包含接缝的一个区间,然后 菜单->效果->crossfade clips.
- 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析
作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...