Android使用Pull解析器解析xml文件的实现代码

 更新时间:2013年02月25日 11:35:32   作者:  
Android使用Pull解析器解析xml文件的实现代码,需要的朋友可以参考一下

2个类:1个实体类Person.java,1个继承Activity的类

 

1.Person.java

复制代码 代码如下:

package com.mrzhu.work_1_sax;

public class Person {
 private String personId;
 private String name;
 private String address;
 private String tel;
 private String fax;
 private String email;

 public String getPersonId() {
  return personId;
 }

 public void setPersonId(String personId) {
  this.personId = personId;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getAddress() {
  return address;
 }

 public void setAddress(String address) {
  this.address = address;
 }

 public String getTel() {
  return tel;
 }

 public void setTel(String tel) {
  this.tel = tel;
 }

 public String getFax() {
  return fax;
 }

 public void setFax(String fax) {
  this.fax = fax;
 }

 public String getEmail() {
  return email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

 @Override
 public String toString() {
  return "Person [personId=" + personId + ", name=" + name + ", address="
    + address + ", tel=" + tel + ", fax=" + fax + ", email="
    + email + "]";
 }
}

2.继承Activity的类:

复制代码 代码如下:

package com.mrzhu.work_1_sax;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
import android.widget.Toast;

public class PullActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void pull(View v){
     pullParse(); 
    }

    public void pullParse(){
     List<Person> persons = null;
     Person person = null;
     InputStream in = null;
     try {
      XmlPullParser pullParser = Xml.newPullParser();
      in = getAssets().open("person.xml");
   pullParser.setInput(in, "utf-8");
   int eventType = pullParser.getEventType();
   while(eventType != XmlPullParser.END_DOCUMENT){
    String qName = pullParser.getName();
    switch(eventType){
    case XmlPullParser.START_DOCUMENT:
     persons = new ArrayList<Person>();
     break;
    case XmlPullParser.START_TAG:
     if("person".equalsIgnoreCase(qName)){
      person = new Person();
      person.setPersonId(pullParser.getAttributeValue(null, "personid"));
     }else if("name".equalsIgnoreCase(qName)){
      person.setName(pullParser.nextText());
     }else if("address".equalsIgnoreCase(qName)){
      person.setAddress(pullParser.nextText());
     }else if("tel".equalsIgnoreCase(qName)){
      person.setTel(pullParser.nextText());
     }else if("fax".equalsIgnoreCase(qName)){
      person.setFax(pullParser.nextText());
     }else if("email".equalsIgnoreCase(qName)){
      person.setEmail(pullParser.nextText());
     }
     break;
    case XmlPullParser.END_TAG:
     if("person".equalsIgnoreCase(qName)){
      persons.add(person);
     }
     break;
    }
    eventType = pullParser.next();
   }
   in.close();
  } catch (XmlPullParserException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }

     for (Person person2 : persons) {
   Toast.makeText(this, person2.toString(), Toast.LENGTH_SHORT).show();
  }
    }
}

main.xml

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="pull"
        android:text="pull" />

</LinearLayout>

放在assets文件夹下的person.xml文件

复制代码 代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<people>
 <person personid="E01">
  <name>Tony Blair</name>
  <address>10 Downing Street, London, UK</address>
  <tel>(061) 98765</tel>
  <fax>(061) 98765</fax>
  <email>blair@everywhere.com</email>
 </person>
 <person personid="E02">
  <name>Bill Clinton</name>
  <address>White House, USA</address>
  <tel>(001) 6400 98765</tel>
  <fax>(001) 6400 98765</fax>
  <email>bill@everywhere.com</email>
 </person>
 <person personid="E03">
  <name>Tom Cruise</name>
  <address>57 Jumbo Street, New York, USA</address>
  <tel>(001) 4500 67859</tel>
  <fax>(001) 4500 67859</fax>
  <email>cruise@everywhere.com</email>
 </person>
 <person personid="E04">
  <name>Linda Goodman</name>
  <address>78 Crax Lane, London, UK</address>
  <tel>(061) 54 56789</tel>
  <fax>(061) 54 56789</fax>
  <email>linda@everywhere.com</email>
 </person>
</people>

相关文章

  • Android中通过外部程序启动App的三种方法

    Android中通过外部程序启动App的三种方法

    这篇文章主要介绍了Android中通过外部程序启动App的三种方法,本文讲解了直接通过包名、通过自定义的Action、通过Scheme三种方法,并分别给出操作代码,需要的朋友可以参考下
    2015-04-04
  • 详解Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou实现手指滑动效果

    详解Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarL

    这篇文章主要为大家详细介绍了Android使用CoordinatorLayout+AppBarLayout+CollapsingToolbarLayou实现手指滑动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Android中实现EditText密码显示隐藏的方法

    Android中实现EditText密码显示隐藏的方法

    这篇文章主要介绍了Android中实现EditText密码显示隐藏的方法,需要的朋友可以参考下
    2017-01-01
  • android 自定义TabActivity的实例方法

    android 自定义TabActivity的实例方法

    系统自带的TabActivity的效果不甚理想。开发中对TabActivity自定义可能有两种:第一种:改变TAB行的位置,如放到页面下方。第二种:对TabHost图片的自定义
    2013-11-11
  • 基于linux与windows平台下 如何下载android sdk源代码的方法详解

    基于linux与windows平台下 如何下载android sdk源代码的方法详解

    本文主要是介绍在linux和windows平台下,如何下载android sdk的源代码,注意是sdk的源代码,而不是android的所有源代码,同时介绍如何把sdk源代码加入到eclipse里,使android 平台手机开发者可以直接查看源代码,通过阅读SDK源码,能更好的理解和运用Android的API
    2013-05-05
  • 自定义View之kotlin绘制折线图实例教程

    自定义View之kotlin绘制折线图实例教程

    折线图是我们在开发中经常会遇到的一个需求,下面这篇文章主要给大家介绍了关于自定义View之kotlin绘制折线图的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09
  • Android ApplicationContext接口深入分析

    Android ApplicationContext接口深入分析

    ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等
    2022-11-11
  • android如何获取经纬度

    android如何获取经纬度

    这篇文章主要为大家详细介绍了android获取经纬度的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Android进阶——安卓调用ESC/POS打印机打印实例

    Android进阶——安卓调用ESC/POS打印机打印实例

    本篇文章主要介绍了Android进阶——安卓调用ESC/POS打印机打印实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04
  • gradle配置国内镜像的实现

    gradle配置国内镜像的实现

    这篇文章主要介绍了gradle配置国内镜像的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论