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操作的更多相关文章

  1. android XMl 解析神奇xstream 二: 把对象转换成xml

    前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...

  2. Android权限操作之uses-permission详解

    本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...

  3. 二、Android XML数据解析

    XML,可扩展标记语言.可以用来存储数据,可以看做是一个小型的数据库,SharedPreference就是使用XML文件存储数据的,SQLite底层也是一个XML文件,而在网络应用方面,通常作为信息的 ...

  4. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  5. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  6. LINQ系列:LINQ to XML操作

    LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...

  7. T-Sql(五)xml操作

    t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...

  8. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  9. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

随机推荐

  1. java的nio之:java的nio系列教程之channel的数据交换

    在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel. transferFro ...

  2. python_Day1_基础知识开篇

    一.python安装 1)windows上同时安装python2.0和python3.0配置 (1)在python官网下载windows版本python2.0和python3.0安装包 官网地址:ht ...

  3. struts2 的简单实例应用

    功能:本实例实现的功能是从输入界面输入用户名和密码,若用户名和密码正确转到成功界面,否则转到失败界面. 1)在创建了一个JavaWeb工程后,导入struts2的核心支持包库. 2)web项目右击-M ...

  4. Oracle数据库——用户、方案的创建与管理

    一.涉及内容 1.掌握用户.方案与权限的基本概念. 2.熟练掌握用户操作的相关命令. 二.具体操作 (一)选择题: 1.关于方案的描述下列哪一项不正确?(C) A.表或索引等对象一定属于某一个方案 B ...

  5. Dom选择器及操作文本内容

    文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...

  6. 浅析Struts1和Struts2的Action线程安全问题 转

    浅析Struts1和Struts2的Action线程安全问题  转 http://blog.csdn.net/virgoboy2004/article/details/5876133 [问题描述]最近 ...

  7. 【java】serialVersionUID作用

    serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...

  8. [mysql] mysql主从复制(基于日志点)

    怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修 ...

  9. [转]StringUtils方法

    摘自http://blog.sina.com.cn/s/blog_4550f3ca0100qrsd.html org.apache.commons.lang.StringUtils中方法的操作对象是j ...

  10. 【Executor】配置ThreadPoolExecutor

    来自为知笔记(Wiz) 附件列表