文档章节

pull 方式解析xml文件

carlos
 carlos
发布于 2014/10/05 17:05
字数 331
阅读 243
收藏 7
点赞 0
评论 0
  1. XmlPullParser解析xml的android文档docs/reference/org/xmlpull/v1/XmlPullParser.html

  2. xmlPullParer官网:http://www.xmlpull.org/

    例子:要解析的文件:pull.xml   

     

     

     

     

  3. <?xml version="1.0" encoding="UTF-8"?>
    <Customer>
     <PersonName>
      <SurName>张三</SurName>
     </PersonName>
     <PersonName>
      <SurName>李四</SurName>
     </PersonName>
     
     <ContactName contactType="CSM">
     <PersonName>
      <SurName>王五</SurName>
     </PersonName>
     <Telephone PhoneTechType="Mobile" PhoneNumber="1310000000"/>
     <Email />
     </ContactName>
    </Customer>

    解析此文件的java文件:

     

  4. package com.xmlpullparser;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.util.Xml;
    import android.widget.TextView;
    import org.xmlpull.v1.XmlPullParser;
    public class MainActivity extends Activity {
     private static final String TAG = "xmlpullparserTest";
     TextView mTextResult = null;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      mTextResult = (TextView)findViewById(R.id.textView1);
      List<Customer> customers = readXMLPull();
      StringBuffer strBuffer = new StringBuffer();
      for(Customer cus:customers)
      {
       strBuffer.append(cus.mSurName+", "+cus.mContactType+","+cus.mPhoneTechType+","
         +cus.mPhoneNumber+"\n");
       
      }
      mTextResult.setText(strBuffer);
     }
     public List<Customer> readXMLPull()
     {
      List<Customer> customers = null;
      Customer customer = null;
      InputStream is = null;
      StringBuffer buffer = null;
      int personCount = 0;
      try {
       is = getResources().openRawResource(R.raw.pull);
       XmlPullParser xmlParser = Xml.newPullParser();
       xmlParser.setInput(is,"utf-8");
       int evtType = xmlParser.getEventType();
       while(evtType!=XmlPullParser.END_DOCUMENT)
       {
        switch(evtType)
        {
         case XmlPullParser.START_DOCUMENT:
          buffer = new StringBuffer();
          break;
         case XmlPullParser.END_DOCUMENT:
          break;
         case XmlPullParser.START_TAG:
          buffer.delete(0, buffer.length());
          String tag = xmlParser.getName();
          Log.d(TAG, "tag="+tag);
          if(tag.equalsIgnoreCase("Customer"))
          {
           customers = new ArrayList<Customer>();       
          }
          else if(tag.equalsIgnoreCase("PersonName")&&personCount<2)
          {
           customer = new Customer();
           personCount++;
          }
          else if(tag.equalsIgnoreCase("ContactName"))
          {
           customer = new Customer();
           customer.mContactType = xmlParser.getAttributeValue(null, "contactType");
          }
          else if(tag.equalsIgnoreCase("Telephone")&&customer!=null)
          {
           customer.mPhoneTechType = xmlParser.getAttributeValue(null, "PhoneTechType");
           customer.mPhoneNumber = xmlParser.getAttributeValue(null, "PhoneNumber");
          }
          break;
         case XmlPullParser.END_TAG:
          if(xmlParser.getName().equalsIgnoreCase("PersonName")&&customer!=null)
          {
           customers.add(customer);
           if(personCount<2)
           {
            customer = null;
           }
          }
          else if(xmlParser.getName().equalsIgnoreCase("SurName"))
          {
           customer.mSurName = buffer.toString().trim();
          }
          break;
         case XmlPullParser.TEXT:
          Log.d(TAG, "text ="+xmlParser.getText());
          buffer.append(xmlParser.getText());
          break;
         default:
          break;
        
        }
        evtType = xmlParser.next();
       }
       
      } catch (Exception e) {
       // TODO: handle exception
       e.printStackTrace();
      }
      return customers;
     }
     
    }

    customer.java

  5. package com.xmlpullparser;
    public class Customer
    {
     public String mSurName;
     public String mContactType;
     public String mPhoneTechType;
     public String mPhoneNumber;
    }
  6. 效果图:

先记下来。欢迎提出意见。

© 著作权归作者所有

共有 人打赏支持
carlos
粉丝 24
博文 85
码字总数 21928
作品 0
黄浦
程序员
XML解析之——Pull解析和Xml转Json

Xml的使用在Android开发中也时不时地遇到,通常xml用来写配置文件。Xml解析也是Android开发人员必备的一项技术点。常见的XML解析为DOM解析,SAX解析和PULL解析。 DOM解析: 一次性将全部内容...

翻滚吧李博 ⋅ 2017/12/28 ⋅ 0

Android 创建与解析XML(六)—— 比较与使用

前面介绍了四种创建、解析XML的方式: 0、 Android 创建与解析XML(一)—— 概述 1、 Android 创建与解析XML(二)—— Dom方式 2、 Android 创建与解析XML(三)—— Sax方式 3、 Android ...

长平狐 ⋅ 2013/01/06 ⋅ 0

Android的三种解析方式

第一种方式:DOM解析器: DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和...

津乐 ⋅ 01/11 ⋅ 0

android解析分析

我们使用java解析xml,主要还是有两种方式,一种方式是SAX解析,另一种是DOM解析。当然还有一系列的其他第三方解析API,如JDOM/DOM4J.他们各自有各自的优缺点。这里我们主要分析下最基础的两种...

gavin_jin ⋅ 2012/03/18 ⋅ 0

XML解析方法详解

今日目标:DOM、 SAX、 STAX、 XML解析API 今日重点:JAXP DOM解析 、JAXP SAX解析、XML PULL解析。 XML现在已成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。深入了...

honzhang ⋅ 2017/12/26 ⋅ 0

[Android] android平台下sax,dom,pull解析方式性能比较

1.Android中三种XML的解析方式,分别为Dom,Sax,Pull,其中Pull的解析方式最优 2.Dom,Sax,Pull解析方式的区别 (1).Dom解析方式: 首先一下子加载整个文档然后再挨个节点解析,费流量 优点:对于处理...

枫兮兮 ⋅ 2014/02/27 ⋅ 0

PULL解析XML和SAX解析的区别

如果在一个XML文档中我们只需要前面一部分数据,但是使用SAX方式或DOM方式会对整个文档进行解析,尽管XML文档中后面的大部分数据我们其实都不需要解析,因此这样实际上就浪费了处理资源。使用...

TedYin ⋅ 2013/11/12 ⋅ 0

XML解析之PULL解析

Pull解析XML文件的方式与SAX解析XML文件的方式大致相同,他们都是基于事件驱动的。所以,利用pull解析XML文件需要下面几个步骤: 1)通过XMLPullParserFactory获取XMLPullParser对象。 2)通...

summerpxy ⋅ 2014/02/21 ⋅ 1

android xml解析的三种方式

在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析...

球球 ⋅ 2016/09/24 ⋅ 0

说说在 Android 中如何解析 XML

网络上传输数据有两种格式:XML 与 JSON。JSON 暂且按下不表,我们先说说如何解析 XML。 1 搭建 Web 服务器 假设我们使用 Apache HTTP Server 搭建好了 Web 服务器(搭建过程请看 这里)。 ...

deniro ⋅ 06/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部