使用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)操作文件,然后 ...
随机推荐
- mac os下得pycharm怎么设置mercurial?
捣鼓了一会儿,最终搞定了. 先把链接贴上来:https://www.jetbrains.com/pycharm/help/mercurial.html 如果你发现你的pycharm在设置mercuri ...
- 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等
http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...
- Apache Commons 常用工具类整理
其实一直都在使用常用工具类,只是从没去整理过,今天空了把一些常用的整理一下吧 怎么使用的一看就明白,另外还有注释,最后的使用pom引入的jar包 public class ApacheCommonsT ...
- 最常用的DOS命令
ping:利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障,如ping 127.0.0.1tracert:跟踪路由,查询到相应网站的服务器之间所需经过的路由器个数,如trace ...
- java8-1 final
1.final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆盖,复写) final可以修饰变量,该变量不能被重新赋值.因为这个变 ...
- angular常见坑洞
由于版本不同,可能有些问题在某些版本下出现,某些版本下不出现. 指令不可平行(v1.3.2): 多个指令不能这样一个接着一个排下去: <div> <directive-one/> ...
- [原创]Gerrit中文乱码问题解决方案分享
应开发同事的要求,部署了Gitlab+Gerrit+Jenkins的持续集成环境. 但是发现了一个问题,Gerrit登陆后有中文乱码出现. 具体情况如下: (1)Git代码中的中文乱码处理: 为妥善解 ...
- Install MySQL on Mac OS X——MAC安装MySQL
很多关于如何安装MySQL的教程已经过时了,或者比必须的步骤复杂得多.这篇教程将展示如何安装MySQL,启动MySQL,以root用户进入MySQL,以及创建删除退出数据库. Step 1: 下载My ...
- WPF使用cefsharp
最近在公司项目上会用到cefsharp.wpf,不知道为什么按照网上的配置一直无法运行成功,怎么配置可以参考以下这篇博文: http://www.cnblogs.com/TianFang/p/4573 ...
- [tools]QuickPing
一款神器 quickping 能够很快的探测出该网断分出去哪些地址. 在线的会显示绿色 在线的+有主机名的显示为亮绿色