Pull解析

  Pull的XML解析操作与SAX解析操作类似,也是采用事件驱动的方式。当XML文档开始解析或者遇到节点时都会有相应的事件代码触发。

  主要涉及两个类:

  org.xmlpull.v1.XmlPullParserFactory

  org.xmlpull.v1.XmlPullParser

  

  使用XMLPull解析xml文件的步骤:

  1.创建工厂类

  XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

  2.创建parser

  XmlPullParser xpp = factory.newPullParser();

  3.设置输入流,即要解析的内容

  xpp.setInput(input, "GBK"); //这里主要由两种形式,字符流(如:StringReader)或者字节流(如:FileInputStream)

  4.通过循环,解析内容  

  int eventType = xpp.getEventType(); //必须要有
  while(eventType != XmlPullParser.END_DOCUMENT) {

    if(eventType == XmlPullParser.START_DOCUMENT) {

      all = new ArrayList<LinkMan>();
    } else if(eventType == XmlPullParser.START_TAG) {

      elementName = xpp.getName();
      if("linkman".equals(elementName)) {

        man = new LinkMan();
      }
    } else if(eventType == XmlPullParser.END_TAG) {

      elementName = xpp.getName();
      if("linkman".equals(elementName)) {

        all.add(man);
        man = null;
      }
    } else if(eventType == XmlPullParser.TEXT) {

      if("name".equals(elementName)) {

        man.setName(xpp.getText());
      } else if("email".equals(elementName)) {

        man.setEmail(xpp.getText());
      }
    }

    eventType = xpp.next(); //一定要有

  }

  Pull生成XML文档

  需要利用org.xmlpull.v1.XmlSerializer  

   使用XmlSerializer生成XML文件的步骤和解析xml文件的步骤类似:

  1.创建工厂类

  XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

  2.创建XmlSerializer

  XmlSerializer xs = factory.newSerializer();

  3.设置输出流,即要写入的目标位置流,可以是字节流,也可以是字符流。

  xs.setOutput(output, "UTF-8");

  4.处理输出内容  

  xs.startDocument("UTF-8", true);
  xs.startTag(null, "addresslist");
  Iterator<LinkMan> iter = this.all.iterator();
  while(iter.hasNext()) {

    LinkMan man = iter.next();
    xs.startTag(null, "linkman");
    xs.startTag(null, "name");
    xs.text(man.getName());
    xs.endTag(null, "name");
    xs.startTag(null, "email");
    xs.text(man.getEmail());
    xs.endTag(null, "email");
    xs.endTag(null, "linkman");
  }

xs.endTag(null, "addresslist");
xs.endDocument();
xs.flush();

android 之 XMLPull的更多相关文章

  1. Android之使用XMLPull解析xml(二)

    转自:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 介绍下在Android中极力推荐的xmlpull方式解析xml.x ...

  2. Android xmlpull 方式解析xml文件

    1.新建一个xml文件,放在res/xml目录下 <?xml version="1.0" encoding="utf-8"?> <citys& ...

  3. android解析xml一直报错org.xmlpull.v1.XmlPullParserException

     错误: org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT @1:2 injava.io.String ...

  4. Android—基于微信开放平台v3SDK,开发微信支付填坑。

    接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...

  5. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  6. android GPS定位源码 地图显示位置源码 有用到的小伙伴自提取

    package com.jasgroup.cn.amhdeam; import java.io.IOException; import java.util.Iterator; import andro ...

  7. Android系统的五种数据存储形式(二)

    之前介绍了Android系统下三种数据存储形式,今天补充介绍另外两种,分别是内容提供者和网络存储.有些人可能认为内存提供者和网络存储更偏向于对数据的操作而不是数据的存储,但这两种方式确实与数据有关,所 ...

  8. 【Android】实现XML解析的几种技术

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  9. Android程序进行混淆,在导出签名apk包时出错!

    今天终于完成了近一个月的App开发工作,对程序进行混淆导出签名apk包时,却出现了如下的错误: Proguard returned with error code 1. See console Not ...

随机推荐

  1. HttpURLConnection请求接口

    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.DataOutputStream; ...

  2. about shell

    摘抄 cat 等 cat主要有三大功能:1.一次显示整个文件.$ cat   filename2.从键盘创建一个文件.$ cat  >  filename只能创建新文件,不能编辑已有文件.3.将 ...

  3. HTML CSS 常用英语单词

    head 头部              body  身体            title 标题            table表格            list 列表            i ...

  4. java 嵌套类 简记

    嵌套类包括:1)静态嵌套类  (static 修饰符) 2)非静态嵌套类(又叫内部类) 其中内部类又可分为三种: 其一.在一个类(外部类)中直接定义的内部类: 其二.在一个方法(外部类的方法)中定义的 ...

  5. ARM-linux嵌入式开发平台搭建1

    初学嵌入式开发,由于是自学,走了很多弯路,现总结一下嵌入式ARM-LINUX开发环境搭建步骤: 1.安装linux系统,由于初学,我选择fedora 14.安装的具体步骤就不详细说了. 2.安装NFS ...

  6. php学习注意点

    1 多阅读手册和源代码 没什么比阅读手册更值得强调的事了–仅仅通过阅读手册你就可以学习到很多东西,特别是很多有关于字符串和数组的函数.就在这些函数里面包括许多有用的功能,如果你仔细阅读手册,你会经常发 ...

  7. [转]Android 5.0——Material Design详解(动画篇)

    Material Design:Google推出的一个全新的设计语言,它的特点就是拟物扁平化. Material Design包含了很多内容,今天跟大家分享一下Material新增的动画: 在Andr ...

  8. android GC内存回收小析

    由于时间问题,简单的谈谈自己的理解. 大家都知道,在android开发中,不需要自己去管理,有垃圾回收机制会自动帮我们去回收 没有被引用到的对象. 那垃圾回收机制到底是怎样的呢?下面列出本人的一些理解 ...

  9. ArcGIS发布地图服务

    一般做完矢量图绘制工作后,生成的.mxd文件只能在ArcMap中查看,为了方便用户进行浏览,我们需要发布地图服务. 目前为止最常用的就是在ArcGIS中发布地图服务. 今天也算是在做“发布地图服务”的 ...

  10. 网络编程socket基本API详解(转)

    网络编程socket基本API详解   socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...