首先,指定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. Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. Java语法基础(二)----运算符

    一.运算符: 运算符包括下面几种: 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三目运算符 最不常用的是位运算符,但也是最接近计算机底层的. 1.算术运算符 (1)+的几种用法:加法.正 ...

  3. AutoIT 实现Firefox下载

    Firefox下载的完整代码: Func IsVisible($handle) ;WinGetState: 2 = Window is visible If BitAND(WinGetState($h ...

  4. mysql怎么查询前10条数据?

    mysql 没有top的用法.取而代之的是limit语法为:limit m,n省略n就可以得到你要的效果了. select * from table1 order by column desc  li ...

  5. 【转】【C#】SendMessage

    SendMessage是一个在user32.dll中声明的API函数,在C#中导入如下: using System.Runtime.InteropServices; [DllImport(" ...

  6. ip routing&no ip routing

    ip routing--------查路由表, 如果ping的目的在RT中没有,不发出任何包(arp也不会发出)   如果RT中存在,则arp  下一跳,相当于no ip routing+配置网关 n ...

  7. 通过jdbc获取数据库中的表结构

    通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类   1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等.Met ...

  8. 信息安全系统设计基础实验五 20135210&20135218

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础           班级: 1352 姓名:程涵,姬梦馨             学号:2013521 ...

  9. git的简介,安装以及使用

    1git的简介 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 2Linus一直痛恨的CVS及SVN都是集中式的版本控制系 ...

  10. 利用mstsc远程桌面传送文件,记录一下

    尼玛之前服务器上传有点异常,在服务器装了一个上传下载监控的软件,用的是什么 绿色版QQ流量监控,绿色是挺绿色的,装了就等哭吧.没时间打字反正就是删除不了,后来想办法删除了.艹.所有服务除了系统服务能上 ...