首先,指定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. box unboxing(装箱 拆箱) C#编程指南

    box(装箱)消耗大 box在堆栈中创建一个新的对象,性能消耗大 int i = 123; // Boxing copies the value of i into object o. object ...

  2. JSON对象和字符串之间的相互转换

    比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男&quo ...

  3. ZIP文件伪加密

    题目给出图片,那当然是从图片下手啦! 首先下载图片,在Linux系统下用binwalk工具打开,果然不出所料,里面藏有文件! 用dd把它分解出来! 'txt' 格式的文件提取出来!会看到一个Zip压缩 ...

  4. 从客户端(&)中检测到有潜在危险的 Request.Path 值。

    1. <system.web>    <httpRuntime requestValidationMode="2.0" />   </system.w ...

  5. 关于MySql全文索引

    从 Mysql 4.0 开始就支持全文索引功能,但是 Mysql 默认的最小索引长度是 4.如果是英文默认值是比较合理的,但是中文绝大部分词都是2个字符,这就导致小于4个字的词都不能被索引,全文索引功 ...

  6. EmberJS路由详解

    配置路由器,ember中是根据路径寻找与路由名相对应的模板和控制器的,比如当访问http://localhost:80/这个网址的时候,ember框架会自动寻找与路由名post相对应的PostTemp ...

  7. JQuery[一] 中如何选中$(this)下面的子元素

    <ul> li><span></span></li> li><span></span></li> < ...

  8. c++中二进制和整数转化

    #1,包含文件 #include<bitset> #2,整数转化成二进制 int a = 63; bitset<6> bs(a); #3,二进制转化成整数 int b = bs ...

  9. 广州传智博客黑马训练营.Net15期

    广州传智博客黑马训练营.Net15期 7 张扬波 MVC大项目 6 张扬波 MVC 3 胡凌浩 HTML&JS 2 基础加强+三层 5 张扬波 企业站点(asp.net)&EF 4 江 ...

  10. 2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程

    2016北京PHP39期 ThinkPHP Discuz Dedecms 微信开发视频教程 所有项目均带有软件,笔记,视频,源码 日期   课程(空内容代表放假) 2015/7/10 星期五 开学典礼 ...