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. 货币金额的计算 - Java中的BigDecimal

    在<Effective Java>这本书中也提到这个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal.,而且使 ...

  2. Jq_选择器、效果函数

    JQuery 选择器 选择器                     实例                                   选取 *                         ...

  3. 转!!常用的4种动态网页技术—CGI、ASP、JSP、PHP

    1.CGI   CGI(Common Gateway Interface,公用网关接口)是较早用来建立动态网页的技术.当客户端向Web服务器上指定的CGI程序发出请求时,Web服务器会启动一个新的进程 ...

  4. js中正则表达式 书写方法

    function test(){    var text="index.aspx?test=1&ww=2&www=3";            var   re = ...

  5. 自定义ExpressionBuilder

    ExpressionBuilder的常见说明见https://msdn.microsoft.com/zh-cn/library/System.Web.Compilation.ExpressionBui ...

  6. cocos2dx与Lua以及quick cocos

    1.cocos2dx中的脚本架构与组件 2.quick cocos的开发优势 3.自定义c++类如何导出到lua

  7. 【CodeVS 1014】装箱问题

    题目描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数). 要求n个物品中,任取若干个装入箱内,使箱子的剩 ...

  8. 【CITE】VS2012程序打包部署

      选择Debug模式将项目重新生成,并保证没有任何bug   选择解决方案,右击——添加——新建项目——安装和部署   下载过打包工具InstallShield2013LimitedEdition, ...

  9. selenium+python笔记2

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 操作浏览器 """ fro ...

  10. Qt之Threads和QObjects

    简述 QThread继承自QObject,它发射信号(signals)以表明线程执行开始或结束,并提供了一些槽函数(slots). 更有趣的是,QObjects可以在多线程中使用,发射信号以在其它线程 ...