文档章节

pull 方式解析xml文件

carlos
 carlos
发布于 2014/10/05 17:05
字数 331
阅读 243
收藏 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
粉丝 24
博文 85
码字总数 21928
作品 0
黄浦
程序员
XML解析之——Pull解析和Xml转Json

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

翻滚吧李博
2017/12/28
0
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树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和...

津乐
01/11
0
0
XML解析方法详解

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

honzhang
2017/12/26
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

没有更多内容

加载失败,请刷新页面

加载更多

【mpvue】三

使用了快1个月,陆续整理发现的坑 1、pageA-pageB-pageA-pageC 如果以这种顺序,大概理解成,列表进详情B, 返回列表进入详情C,那么进入详情C的时候,会因为缓存,先展现详情B的内容。解决方...

登天的感觉
13分钟前
1
0
在EXCEL指定SHEET页,指定文字位置,插入批注

Java操作EXCEL文件,利用POI,在EXCEL指定SHEET页中指定文字位置处插入批注 package excel; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.hssf......

zhaochaochao
15分钟前
1
0
一些网站。

UI schema,可以用json定义UI表单:https://jsonforms.io/examples/array

王坤charlie
22分钟前
1
0
百万连接,百亿吞吐量服务的JVM性能调优实战

转载占小狼博客 应用:shark-新美大移动端网络优化(每日接受移动端请求约150亿) 应用特点 : qps比较高,新生代增长飞快 用户的连接需要维持一段时间 单机需要维持海量连接,几十万的级别 以...

BakerZhu
25分钟前
1
0
iOS涂色涂鸦效果、Swift仿喜马拉雅FM、抽屉转场动画、拖拽头像、标签选择器等源码

iOS精选源码 LeeTagView 标签选择控件 为您的用户显示界面添加美观的加载视图 Swift4: 可拖动头像,增加物理属性 Swift版抽屉效果,自定义转场动画管理器 Swift 仿写喜马拉雅FM 可能是最好用...

sunnyaigd
25分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部