首先,指定XML格式,我指定的XML格式如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<message>
<sms>
<body>
陈驰0
</body>
<date>
1462162910995
</date>
<address>
1380
</address>
<type>
1
</type>
</sms>
<message>

一、用xml序列化器来生成xml文件

//使用xml序列化器生成xml文件
//1.拿到序列化器对象
XmlSerializer xs = Xml.newSerializer();
//2.初始化
File file = new File(Environment.getExternalStorageDirectory(), "sms2.xml");
try {
FileOutputStream fos = new FileOutputStream(file);
//encoding:指定用什么编码生成xml文件
xs.setOutput(fos, "utf-8"); //3.开始生成xml文件
//encoding:指定头节点中encoding属性的值
//standalone:该xml文件是否独立
xs.startDocument("utf-8", true); xs.startTag(null, "message");//开始节点 for (Message msg : list) {
xs.startTag(null, "sms"); xs.startTag(null, "body");
xs.text(msg.getBody());
xs.endTag(null, "body");
xs.startTag(null, "date");
xs.text(msg.getDate());
xs.endTag(null, "date");
xs.startTag(null, "address");
xs.text(msg.getAddress());
xs.endTag(null, "address");
xs.startTag(null, "type");
xs.text(msg.getType());
xs.endTag(null, "type"); xs.endTag(null, "sms");
} xs.endTag(null, "message");//结束节点 //告诉序列化器,生成完毕
xs.endDocument();
} catch (Exception e) {
e.printStackTrace();
}

 二、利用pull解析xml文件

File file = new File(Environment.getExternalStorageDirectory(), "sms2.xml");
try {
FileInputStream fis = new FileInputStream(file); //拿到pull解析器对象
XmlPullParser xp = Xml.newPullParser();
//初始化
xp.setInput(fis, "utf-8"); //获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,
//从而确定我们应该做什么操作
int type = xp.getEventType();
Message msg = null;
while(type != XmlPullParser.END_DOCUMENT){
//根据节点的类型,进行不同的操作
switch (type) {
case XmlPullParser.START_TAG:
//获取当前结点的名字
if("message".equals(xp.getName())){
//创建Message集合对象
list = new ArrayList<Message>();
}else if ("sms".equals(xp.getName())) {
//创建Message的javabean
msg = new Message();
}else if ("body".equals(xp.getName())) {
//获取当前节点下一个节点的文本(即陈驰0)
msg.setBody(xp.nextText());
}else if ("date".equals(xp.getName())) {
//获取当前节点下一个节点的文本(即陈驰0)
msg.setDate(xp.nextText());
}else if ("address".equals(xp.getName())) {
//获取当前节点下一个节点的文本(即陈驰0)
msg.setAddress(xp.nextText());
}else if ("type".equals(xp.getName())) {
//获取当前节点下一个节点的文本(即陈驰0)
msg.setType(xp.nextText());
}
break;
case XmlPullParser.END_TAG:
if("sms".equals(xp.getName())){
list.add(msg);
}
break; default:
break;
} //把指针移动到下一个节点,并返回该节点的事件类型
type = xp.next();
} for (Message message : list) {
System.out.println(message);
} } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

使用XML序列化器生成XML文件和利用pull解析XML文件的更多相关文章

  1. 使用XMl序列化器生成xml文件

    生成XML文件 创建几个虚拟的短信对象,存在list中 备份数据通常都是备份至sd卡 使用StringBuffer拼接字符串 把整个xml文件所有节点append到sb对象里 sb.append(&q ...

  2. Android 使用xml序列化器生成xml文件

    在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...

  3. IOSerialize,xml和json,soap序列化器,二进制序列化器,XML序列化器,文件 检查、新增、复制、移动、删除

    1 文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件3 三种序列化器4 xml和json1.文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/ ...

  4. xml生成方式二(Xml序列化器XmlSerializer)

    一.andoirdAPI提供了xml生成和解析的API: XmlSerializer xs = Xml.newSerializer();和XmlPullParser xmlPullParser = X ...

  5. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  6. .NET 二进制序列化器,SOAP序列化器,XML序列化器

    这里就不说JSON序列化了,只介绍三种:二进制序列化器,SOAP序列化器,XML序列化器 直接上代码: /// <summary> /// 二进制序列化器. /// 最节省流量,压缩程度最 ...

  7. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  8. Android SAX、DOM、Pull解析xml文件剖析与案例讲解

    XML介绍 XML(Extensible Markup Language) 即可扩展标记语言,与HTML一样,都是SGML(Standard Generalized Markup Language,标 ...

  9. 使用PULL解析XML文件

    转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...

随机推荐

  1. RabbitMQ 一二事 - 简单队列使用

    消息队列目前流行的有三种 1. RabbitMQ 2. ActiveMQ 3. Kafka 这三种都非常强大,RabbitMQ目前用的比较多,也比较流行,阿里也在用 ActiveMQ是阿帕奇出品,但是 ...

  2. Android Handler处理机制 ( 二 ) ——Handler,Message,Looper,MessageQueue

    Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取 ...

  3. javascript中的迭代器

    1.forEach迭代器 forEach方法接收一个函数作为参数,对数组中每个元素使用这个函数,只调用这个函数,数组本身没有任何变化 //forEach迭代器 function square(num) ...

  4. mobileTech

    A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 工具类网站 HTML ...

  5. f2fs解析(一)f2fs如何解决wandering tree

    wandering tree问题是log-structured 文件系统(LFS) 特有的一个问题,因为LFS的脏数据是追加更新的,所以如果一个数据块变脏了,那么那个数据块的直接索引块.间接索引块都会 ...

  6. crontab任务取消发送邮件

    1. 方式一,每一个计划任务后加上 >/dev/null 2>&1 */5 * * * * sh /web/adm/Shell/checkin_user_count_everyda ...

  7. sqlalchemy 的 Core 方式使用示例

    知乎: sqlalchemy 的 Core 方式操作数据是一种怎样的体验? 答: 爽! 本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13 基本步骤如下: 1. ...

  8. Java 征途:行者的地图 (转)

    http://www.cnblogs.com/mindwind/p/5251430.html Java 征途:行者的地图   前段时间应因缘梳理了下自己的 Java 知识体系, 成文一篇望能帮到即将走 ...

  9. 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单

    手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单   手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ...

  10. Java系列,《Java核心技术 卷1》,chapter 13,集合

    13.1.2 Java类库中的集合接口和迭代器接口     删除元素,对于next和remove的调用是互相依赖的,如果调用remove之前没有调用next,则会跑出IllegalStateExcep ...