网上的示例太多,基本类似,个人在此做个简单的总结:

1、首先在工程的asserts目录下建一个book.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <books>
  3. <book id="1">
  4. <name>thinking in java</name>
  5. <price>85.5</price>
  6. </book>
  7. <book id="2">
  8. <name>Spring in Action</name>
  9. <price>39.0</price>
  10. </book>
  11. </books>

2、创建Book.java类

  1. /**
  2. *
  3. */
  4. package com.hyzhou.pulldemo;
  5.  
  6. /**
  7. * @author hyzhou
  8. *
  9. * 2013-10-17
  10. */
  11. public class Book {
  12.  
  13. private int id;
  14. private String name;
  15. private float price;
  16.  
  17. public int getId() {
  18. return id;
  19. }
  20.  
  21. public void setId(int id) {
  22. this.id = id;
  23. }
  24.  
  25. public String getName() {
  26. return name;
  27. }
  28.  
  29. public void setName(String name) {
  30. this.name = name;
  31. }
  32.  
  33. public float getPrice() {
  34. return price;
  35. }
  36.  
  37. public void setPrice(float price) {
  38. this.price = price;
  39. }
  40.  
  41. @Override
  42. public String toString() {
  43. return this.id + ":" + this.name + ":" + this.price;
  44. }
  45.  
  46. }

3、创建PullParse.java类

  1. /**
  2. *
  3. */
  4. package com.hyzhou.pulldemo;
  5.  
  6. import java.io.InputStream;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import org.xmlpull.v1.XmlPullParser;
  11.  
  12. import android.util.Xml;
  13. /**
  14. * @author hyzhou
  15. *
  16. * 2013-10-17
  17. */
  18. public class PullParse {
  19.  
  20. public static List<Book> getBooks(InputStream inputStream) throws Exception
  21. {
  22. XmlPullParser parser=Xml.newPullParser();
  23. List<Book> books=null;
  24. Book book=null;
  25. parser.setInput(inputStream, "UTF-8");//以流的形式将xml文件载入
  26.  
  27. int event=parser.getEventType();//产生第一个事件
  28.  
  29. while (event != XmlPullParser.END_DOCUMENT) {
  30. switch (event) {
  31. case XmlPullParser.START_DOCUMENT://判断当前事件是否是文档开始事件
  32. books=new ArrayList<Book>();//初始化books集合
  33. break;
  34. case XmlPullParser.START_TAG: //判断当前事件是否是标签元素开始事件
  35. if ("book".equals(parser.getName())) {//判断开始标签元素是否是book
  36. book = new Book();
  37. book.setId(Integer.parseInt(parser.getAttributeValue(0)));//得到book标签的属性值,并设置book的id
  38.  
  39. }
  40. else if ("name".equals(parser.getName())) {
  41. book.setName(parser.nextText());
  42. }
  43. else if ("price".equals(parser.getName())) {
  44. book.setPrice(Float.parseFloat(parser.nextText()));
  45. }
  46. /**
  47. if (book!=null) {
  48.  
  49. if("name".equals(parser.getName())) //判断开始标签元素是否是name
  50. { //判断开始标签元素是否是name
  51. book.setName(parser.nextText());
  52. }else if("price".equals(parser.getName())){//判断开始标签元素是否是price
  53. book.setPrice(Float.parseFloat(parser.nextText()));
  54. }
  55. }
  56. **/
  57. break;
  58. case XmlPullParser.END_TAG:
  59. if("book".equals(parser.getName())){//判断结束标签元素是否是book
  60. books.add(book);//将book添加到books集合
  61. book = null;
  62. }
  63. break;
  64. }
  65.  
  66. event=parser.next();//进入下一个元素并触发相应事件
  67. }
  68. return books;
  69. }
  70. }

4、编写MainActivity.java类

  1. package com.hyzhou.pulldemo;
  2.  
  3. import java.io.InputStream;
  4. import java.util.List;
  5.  
  6. import android.os.Bundle;
  7. import android.app.Activity;
  8. import android.view.Menu;
  9. import android.widget.TextView;
  10. import android.widget.Toast;
  11.  
  12. public class MainActivity extends Activity {
  13.  
  14. private TextView tView;
  15.  
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. tView = (TextView) findViewById(R.id.tv);
  21. try {
  22. //用类加载器加载xml文件,book.xml放在了assets文件下
  23. InputStream inputStream=getResources().getAssets().open("book.xml");
  24. List<Book> books = PullParse.getBooks(inputStream);
  25.  
  26. StringBuffer sb = new StringBuffer();
  27.  
  28. for (Book book : books) {
  29. String str = book.toString();
  30. sb.append(str);
  31. sb.append("\n");
  32. }
  33. tView.setText(sb.toString());
  34. } catch (Exception e) {
  35. // TODO: handle exception
  36. e.printStackTrace();
  37. Toast.makeText(this, "解析失败", Toast.LENGTH_LONG).show();
  38. }
  39. }
  40.  
  41. @Override
  42. public boolean onCreateOptionsMenu(Menu menu) {
  43. // Inflate the menu; this adds items to the action bar if it is present.
  44. getMenuInflater().inflate(R.menu.activity_main, menu);
  45. return true;
  46. }
  47.  
  48. }

源码下载地址

使用pull方式解析xml文件示例:的更多相关文章

  1. Pull方式解析XML文件

    package com.pingyijinren.test; import android.content.Intent; import android.os.Handler; import andr ...

  2. android-pull方式解析xml文件以及XML文件的序列化

    android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...

  3. 用JAXP的dom方式解析XML文件

    用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...

  4. 在iOS 开发中用GDataXML(DOM方式)解析xml文件

    因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...

  5. 用JAXP的SAX方式解析XML文件

    简单用JAXP的SAX方式(事件驱动)解析XML文件: 文件(1.XML) <?xml version="1.0" encoding="UTF-8" st ...

  6. 【Android】使用Pull生成/解析XML文件

    一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...

  7. Java&Xml教程(五)使用SAX方式解析XML文件

    Java SAX解析机制为我们提供了一系列的API来处理XML文件,SAX解析和DOM解析方式不太一样,它并不是將XML文件内容一次性全部加载,而是连续的部分加载. javax.xml.parsers ...

  8. Java&Xml教程(二)使用DOM方式解析XML文件

    DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...

  9. DOM4J方式解析XML文件

    dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...

随机推荐

  1. 递归 - 求 n 个球中取 m 个不同的球,有多少种取法?

    代码: #include <iostream> using namespace std; int F(int _n, int _m) { if(_n < _m) return 0; ...

  2. PCL库简要说明

    PCL(PointCloudLibrary)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取.滤波.分割.配准.检索. ...

  3. css实现三角形及应用示例

    css实现三角形,网上讲了很多,但我发现一般都是三角向上或者向下的,向左向右这两方向似乎讲得很少,本人试了一下,发现原来在IE下很难搞~~(万恶的IE)...css实现三角形的原理是:当元素的宽高为0 ...

  4. 关于Unity中的声音管理模块(专题七)

    声音的要素 1: 音频文件AudioClip2: 音源AudioSource;3: 耳朵AudioListener;//全局只能有一个4: 2D/3D音频;//2D只是简单地播放声音,3D可以根据距离 ...

  5. mxnet img2rec的使用,生成数据文件

    建立文件夹 制作lst文件,即生成train.lst文件python im2rec.py ./mxrec/train ./mxdata --list --recursive train.lst文件格式 ...

  6. python-迭代器与生成器的区别

    这里涉及几个知识点:迭代器.生成器.yieId 先用个例子看一下迭代器与生成器的区别吧 #L是个list,迭代用for循环即可,L取出来是存放在内存中的,再多次去循环取出都可以>>> ...

  7. Mybatis表关联多对一

    在上章的 一对多 中,我们已经学习如何在 Mybatis 中关联多表,但在实际项目中也是经常使用 多对一 的情况,这些查询是如何处理的呢,在这一节中我们来学习它.多表映射的多对一关系要用到 mybit ...

  8. c# mvc 获取 HtmlHelper 表达式值和时间格式化 去边框

    /// <summary> /// 返回没有边框的只读的TextBox标签 /// </summary> /// <typeparam name="TModel ...

  9. Linux+Apache+PHP+MySQL服务器环境(CentOS篇)

    1.前言 CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定 ...

  10. T4 好用的Vs扩展