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. OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解

    OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的.opengl中的变换一般包括视图变换.模型变换.投影变换等,在每次变换后,opengl将会呈 ...

  2. 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

    <!--解决让程序在集成模块通道下运行--> <system.webServer> <validation validateIntegratedModeConfigura ...

  3. 合并Excel文件

    //合并Excel文件 private void MargeExcelFile(string destFile, string dirPath) { DirectoryInfo dir = new D ...

  4. git代码提交方式

    https://my.oschina.net/tearlight/blog/193921 <a>github的提交方式      (1)git add .----------------- ...

  5. Deep Learning in Bioinformatics

    最近在学tensorflow,深度学习的开源工具,很好奇在生信领域深度学习都能做些什么东西. 镇楼的综述:Deep Learning in Bioinformatics 几篇文章读读看: Deep l ...

  6. angular--todomvc

    类名:ng-class="{completed:todo.completed}" ng-repeat="todo in todoData" ng-model=& ...

  7. js中style,currentStyle和getComputedStyle的区别

    1.style只能获取元素的内联样式,内部样式和外部样式是获取不到的.例子: <div id="test" style="width:100px;height:20 ...

  8. hive数据库的一些应用

    1.创建表格create table usr_info(mob string,reason string,tag string) row format delimited fields termina ...

  9. 《Java程序设计》第七周学习总结

    20145224 <Java程序设计>第七周学习总结 教材学习内容总结 13.1 认识时间与日期 ·想要度量时间首先要有时间基准,目前国际上通用的有一下六个时间基准: 1.格林威治标准时间 ...

  10. 《javascript高级程序设计》 第24章 最佳实践 Best Practices

    24.1 可维护性 Maintainability24.1.1 什么是可维护的代码 What Is Maintainable Code?24.1.2 代码约定 Code Conventions 24. ...