使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定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文件的更多相关文章
- 使用XMl序列化器生成xml文件
生成XML文件 创建几个虚拟的短信对象,存在list中 备份数据通常都是备份至sd卡 使用StringBuffer拼接字符串 把整个xml文件所有节点append到sb对象里 sb.append(&q ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- IOSerialize,xml和json,soap序列化器,二进制序列化器,XML序列化器,文件 检查、新增、复制、移动、删除
1 文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/读取配置文件3 三种序列化器4 xml和json1.文件夹/文件 检查.新增.复制.移动.删除,2 文件读写,记录文本日志/ ...
- xml生成方式二(Xml序列化器XmlSerializer)
一.andoirdAPI提供了xml生成和解析的API: XmlSerializer xs = Xml.newSerializer();和XmlPullParser xmlPullParser = X ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...
- .NET 二进制序列化器,SOAP序列化器,XML序列化器
这里就不说JSON序列化了,只介绍三种:二进制序列化器,SOAP序列化器,XML序列化器 直接上代码: /// <summary> /// 二进制序列化器. /// 最节省流量,压缩程度最 ...
- 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来 ...
- Android SAX、DOM、Pull解析xml文件剖析与案例讲解
XML介绍 XML(Extensible Markup Language) 即可扩展标记语言,与HTML一样,都是SGML(Standard Generalized Markup Language,标 ...
- 使用PULL解析XML文件
转载博文1:http://blog.csdn.net/wangkuifeng0118/article/details/7313241 XmlPull和Sax类似,是基于流(stream)操作文件,然后 ...
随机推荐
- JavaScript Promise API
同步编程通常来说易于调试和维护,然而,异步编程通常能获得更好的性能和更大的灵活性.异步的最大特点是无需等待."Promises"渐渐成为JavaScript里最重要的一部分,大量的 ...
- java9-1.类,抽象类,接口的综合小练习
/* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语. 请用所学知识: 分析,这个案例中有哪些抽象类,哪些接口 ...
- eclipse的使用-------Text File Encoding没有GBK选项的设置
eclipse的使用-------Text File Encoding没有GBK选项的设置 2013-12-25 09:48:06 标签:java myeclipse使用 有一个项目是使用GBK编码的 ...
- 转载 ---> UITableViewCell的分割线
在iOS7中,表格中经常看到的一个情况是如下所示, 解决方法: 1,手写代码控制 1 self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, ...
- Windows 2008 R2 配置 DNS 实现二级域名
本文内容 域名解析 准备工作 安装 DNS 服务器 建立 DNS 区域 建立主机头 服务器网络设置 测试二级域名 IIS 建立 Web 站点 其他 DNS 服务 域名解析 域名解析,是域名到 IP 地 ...
- ArcGis 创建IWorkspace
); ESRI.ArcGIS.esriSystem.IName name = (ESRI.ArcGIS.esriSystem.IName)workspaceName; ...
- javascript js string.Format()收集
方案1http://www.cnblogs.com/loogn/archive/2011/06/20/2085165.html String.prototype.format = function(a ...
- 调用Oracle存储过程并获取out参数值
原文: http://tech.it168.com/oldarticle/2006-04-02/200604021512359.shtml http://www.cnblogs.com/m-cnblo ...
- 全面理解HTTP
URL与URI 我们经常接触到的就是URL了,它就是我们访问web的一个字符串地址,那么URI是什么呢?他们是什么关系呢? URL:uniform resource location 统一资源定位符U ...
- Sql复习之安全性与权限管理+vmware增加硬盘容量
参考资料: http://www.cnblogs.com/Jackeyzhang/archive/2011/05/18/2049621.html VmWare虚拟机增加硬盘容量的方法 http://b ...