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调用C语言写的SO文件

    JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: ...

  2. c++程序编码

    c++程序中涉及到中文字符的输入输出以及其他操作经常会出现乱码.乱码主要是由于程序的源文件编码.可执行文件编码以及程序运行环境的编码不匹配导致.比如,c++源程序文件编码为GB18030, 在源程序中 ...

  3. php输出csv文件 简单实现

    <?php $list = array ( "George,John,Thomas,USA", "James,Adrew,Martin,USA", ); ...

  4. 例题:输入您的出生日期,判断你的星座,主要练习使用datetime类及if else语句。很实用

    while (true) { Console.WriteLine("请输入您的生日(年-月-日)");//提示输入 string x = Console.ReadLine();// ...

  5. linux笔记:文件处理命令touch,cat,more,less,head,tail

    命令名称:touch功能:新建文件命令所在目录:/bin/touch用法:touch 文件名 命令名称:cat功能:显示文件内容命令所在目录:/bin/cat用法:cat [-n] 文件名参数:-n ...

  6. Python--关于dict

    慕课网<Python 入门>学习笔记 1.dict 特性 dict用花括号{}表示,然后按照 key: value, 写出来即可.最后一个 key: value 的逗号可以省略. ①.di ...

  7. [saiku] 访问saiku首页的时候前后台处理流程

    这篇文章讲述:项目启动后,首次访问SAIKU的登录页,前后台分别做了什么处理 (1) 访问的到底是什么页面? 浏览器输入:localhost:8080 啪一回车 根据web访问的尿性,访问的是 ind ...

  8. $('#checkbox').attr('checked'); 返回的是checked或者是undefined解决办法

    $('#checkbox').attr('checked'); 返回的是checked或者是undefined解决办法 <input type='checkbox' id='cb'/>  ...

  9. hdu----(2848)Repository(trie树变形)

    Repository Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  10. nyoj-----127星际之门(一)

    星际之门(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门 ...