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

  1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
  2. <message>
  3. <sms>
  4. <body>
  5. 陈驰0
  6. </body>
  7. <date>
  8. 1462162910995
  9. </date>
  10. <address>
  11. 1380
  12. </address>
  13. <type>
  14. 1
  15. </type>
  16. </sms>
  17. <message>

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

  1. //使用xml序列化器生成xml文件
  2. //1.拿到序列化器对象
  3. XmlSerializer xs = Xml.newSerializer();
  4. //2.初始化
  5. File file = new File(Environment.getExternalStorageDirectory(), "sms2.xml");
  6. try {
  7. FileOutputStream fos = new FileOutputStream(file);
  8. //encoding:指定用什么编码生成xml文件
  9. xs.setOutput(fos, "utf-8");
  10.  
  11. //3.开始生成xml文件
  12. //encoding:指定头节点中encoding属性的值
  13. //standalone:该xml文件是否独立
  14. xs.startDocument("utf-8", true);
  15.  
  16. xs.startTag(null, "message");//开始节点
  17.  
  18. for (Message msg : list) {
  19. xs.startTag(null, "sms");
  20.  
  21. xs.startTag(null, "body");
  22. xs.text(msg.getBody());
  23. xs.endTag(null, "body");
  24. xs.startTag(null, "date");
  25. xs.text(msg.getDate());
  26. xs.endTag(null, "date");
  27. xs.startTag(null, "address");
  28. xs.text(msg.getAddress());
  29. xs.endTag(null, "address");
  30. xs.startTag(null, "type");
  31. xs.text(msg.getType());
  32. xs.endTag(null, "type");
  33.  
  34. xs.endTag(null, "sms");
  35. }
  36.  
  37. xs.endTag(null, "message");//结束节点
  38.  
  39. //告诉序列化器,生成完毕
  40. xs.endDocument();
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }

 二、利用pull解析xml文件

  1. File file = new File(Environment.getExternalStorageDirectory(), "sms2.xml");
  2. try {
  3. FileInputStream fis = new FileInputStream(file);
  4.  
  5. //拿到pull解析器对象
  6. XmlPullParser xp = Xml.newPullParser();
  7. //初始化
  8. xp.setInput(fis, "utf-8");
  9.  
  10. //获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,
  11. //从而确定我们应该做什么操作
  12. int type = xp.getEventType();
  13. Message msg = null;
  14. while(type != XmlPullParser.END_DOCUMENT){
  15. //根据节点的类型,进行不同的操作
  16. switch (type) {
  17. case XmlPullParser.START_TAG:
  18. //获取当前结点的名字
  19. if("message".equals(xp.getName())){
  20. //创建Message集合对象
  21. list = new ArrayList<Message>();
  22. }else if ("sms".equals(xp.getName())) {
  23. //创建Message的javabean
  24. msg = new Message();
  25. }else if ("body".equals(xp.getName())) {
  26. //获取当前节点下一个节点的文本(即陈驰0)
  27. msg.setBody(xp.nextText());
  28. }else if ("date".equals(xp.getName())) {
  29. //获取当前节点下一个节点的文本(即陈驰0)
  30. msg.setDate(xp.nextText());
  31. }else if ("address".equals(xp.getName())) {
  32. //获取当前节点下一个节点的文本(即陈驰0)
  33. msg.setAddress(xp.nextText());
  34. }else if ("type".equals(xp.getName())) {
  35. //获取当前节点下一个节点的文本(即陈驰0)
  36. msg.setType(xp.nextText());
  37. }
  38. break;
  39. case XmlPullParser.END_TAG:
  40. if("sms".equals(xp.getName())){
  41. list.add(msg);
  42. }
  43. break;
  44.  
  45. default:
  46. break;
  47. }
  48.  
  49. //把指针移动到下一个节点,并返回该节点的事件类型
  50. type = xp.next();
  51. }
  52.  
  53. for (Message message : list) {
  54. System.out.println(message);
  55. }
  56.  
  57. } catch (FileNotFoundException e) {
  58. e.printStackTrace();
  59. } catch (XmlPullParserException e) {
  60. e.printStackTrace();
  61. } catch (IOException e) {
  62. e.printStackTrace();
  63. }

使用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. mac os下得pycharm怎么设置mercurial?

    捣鼓了一会儿,最终搞定了. 先把链接贴上来:https://www.jetbrains.com/pycharm/help/mercurial.html 如果你发现你的pycharm在设置mercuri ...

  2. 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等

    http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...

  3. Apache Commons 常用工具类整理

    其实一直都在使用常用工具类,只是从没去整理过,今天空了把一些常用的整理一下吧 怎么使用的一看就明白,另外还有注释,最后的使用pom引入的jar包 public class ApacheCommonsT ...

  4. 最常用的DOS命令

    ping:利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障,如ping 127.0.0.1tracert:跟踪路由,查询到相应网站的服务器之间所需经过的路由器个数,如trace ...

  5. java8-1 final

    1.final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆盖,复写) final可以修饰变量,该变量不能被重新赋值.因为这个变 ...

  6. angular常见坑洞

    由于版本不同,可能有些问题在某些版本下出现,某些版本下不出现. 指令不可平行(v1.3.2): 多个指令不能这样一个接着一个排下去: <div> <directive-one/> ...

  7. [原创]Gerrit中文乱码问题解决方案分享

    应开发同事的要求,部署了Gitlab+Gerrit+Jenkins的持续集成环境. 但是发现了一个问题,Gerrit登陆后有中文乱码出现. 具体情况如下: (1)Git代码中的中文乱码处理: 为妥善解 ...

  8. Install MySQL on Mac OS X——MAC安装MySQL

    很多关于如何安装MySQL的教程已经过时了,或者比必须的步骤复杂得多.这篇教程将展示如何安装MySQL,启动MySQL,以root用户进入MySQL,以及创建删除退出数据库. Step 1: 下载My ...

  9. WPF使用cefsharp

    最近在公司项目上会用到cefsharp.wpf,不知道为什么按照网上的配置一直无法运行成功,怎么配置可以参考以下这篇博文: http://www.cnblogs.com/TianFang/p/4573 ...

  10. [tools]QuickPing

    一款神器 quickping 能够很快的探测出该网断分出去哪些地址.   在线的会显示绿色 在线的+有主机名的显示为亮绿色