文档章节

pull 方式解析xml文件

carlos
 carlos
发布于 2014/10/05 17:05
字数 331
阅读 245
收藏 7
  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
粉丝 25
博文 85
码字总数 21928
作品 0
黄浦
程序员
私信 提问
Android 创建与解析XML(六)—— 比较与使用

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

长平狐
2013/01/06
1K
0
Android的三种解析方式

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

津乐
2018/01/11
0
0
XML解析之——Pull解析和Xml转Json

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

翻滚吧李博
2017/12/28
0
0
[Android] android平台下sax,dom,pull解析方式性能比较

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

枫兮兮
2014/02/27
0
0
android xml解析的三种方式

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

球球
2016/09/24
5
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
7
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
2
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部