使用pull方式解析xml文件示例:
网上的示例太多,基本类似,个人在此做个简单的总结:
1、首先在工程的asserts目录下建一个book.xml文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <books>
- <book id="1">
- <name>thinking in java</name>
- <price>85.5</price>
- </book>
- <book id="2">
- <name>Spring in Action</name>
- <price>39.0</price>
- </book>
- </books>
2、创建Book.java类
- /**
- *
- */
- package com.hyzhou.pulldemo;
- /**
- * @author hyzhou
- *
- * 2013-10-17
- */
- public class Book {
- private int id;
- private String name;
- private float price;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public float getPrice() {
- return price;
- }
- public void setPrice(float price) {
- this.price = price;
- }
- @Override
- public String toString() {
- return this.id + ":" + this.name + ":" + this.price;
- }
- }
3、创建PullParse.java类
- /**
- *
- */
- package com.hyzhou.pulldemo;
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.List;
- import org.xmlpull.v1.XmlPullParser;
- import android.util.Xml;
- /**
- * @author hyzhou
- *
- * 2013-10-17
- */
- public class PullParse {
- public static List<Book> getBooks(InputStream inputStream) throws Exception
- {
- XmlPullParser parser=Xml.newPullParser();
- List<Book> books=null;
- Book book=null;
- parser.setInput(inputStream, "UTF-8");//以流的形式将xml文件载入
- int event=parser.getEventType();//产生第一个事件
- while (event != XmlPullParser.END_DOCUMENT) {
- switch (event) {
- case XmlPullParser.START_DOCUMENT://判断当前事件是否是文档开始事件
- books=new ArrayList<Book>();//初始化books集合
- break;
- case XmlPullParser.START_TAG: //判断当前事件是否是标签元素开始事件
- if ("book".equals(parser.getName())) {//判断开始标签元素是否是book
- book = new Book();
- book.setId(Integer.parseInt(parser.getAttributeValue(0)));//得到book标签的属性值,并设置book的id
- }
- else if ("name".equals(parser.getName())) {
- book.setName(parser.nextText());
- }
- else if ("price".equals(parser.getName())) {
- book.setPrice(Float.parseFloat(parser.nextText()));
- }
- /**
- if (book!=null) {
- if("name".equals(parser.getName())) //判断开始标签元素是否是name
- { //判断开始标签元素是否是name
- book.setName(parser.nextText());
- }else if("price".equals(parser.getName())){//判断开始标签元素是否是price
- book.setPrice(Float.parseFloat(parser.nextText()));
- }
- }
- **/
- break;
- case XmlPullParser.END_TAG:
- if("book".equals(parser.getName())){//判断结束标签元素是否是book
- books.add(book);//将book添加到books集合
- book = null;
- }
- break;
- }
- event=parser.next();//进入下一个元素并触发相应事件
- }
- return books;
- }
- }
4、编写MainActivity.java类
- package com.hyzhou.pulldemo;
- import java.io.InputStream;
- import java.util.List;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.widget.TextView;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- private TextView tView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- tView = (TextView) findViewById(R.id.tv);
- try {
- //用类加载器加载xml文件,book.xml放在了assets文件下
- InputStream inputStream=getResources().getAssets().open("book.xml");
- List<Book> books = PullParse.getBooks(inputStream);
- StringBuffer sb = new StringBuffer();
- for (Book book : books) {
- String str = book.toString();
- sb.append(str);
- sb.append("\n");
- }
- tView.setText(sb.toString());
- } catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
- Toast.makeText(this, "解析失败", Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- }
使用pull方式解析xml文件示例:的更多相关文章
- Pull方式解析XML文件
package com.pingyijinren.test; import android.content.Intent; import android.os.Handler; import andr ...
- android-pull方式解析xml文件以及XML文件的序列化
android解析XML ---------------------------基础要像磐石 在android平台上可以使用SAX.DOM和自带的Pull解析器解析xml文件,本文主要介绍使用pull ...
- 用JAXP的dom方式解析XML文件
用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...
- 在iOS 开发中用GDataXML(DOM方式)解析xml文件
因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我 ...
- 用JAXP的SAX方式解析XML文件
简单用JAXP的SAX方式(事件驱动)解析XML文件: 文件(1.XML) <?xml version="1.0" encoding="UTF-8" st ...
- 【Android】使用Pull生成/解析XML文件
一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...
- Java&Xml教程(五)使用SAX方式解析XML文件
Java SAX解析机制为我们提供了一系列的API来处理XML文件,SAX解析和DOM解析方式不太一样,它并不是將XML文件内容一次性全部加载,而是连续的部分加载. javax.xml.parsers ...
- Java&Xml教程(二)使用DOM方式解析XML文件
DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...
- DOM4J方式解析XML文件
dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. X ...
随机推荐
- 递归 - 求 n 个球中取 m 个不同的球,有多少种取法?
代码: #include <iostream> using namespace std; int F(int _n, int _m) { if(_n < _m) return 0; ...
- PCL库简要说明
PCL(PointCloudLibrary)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取.滤波.分割.配准.检索. ...
- css实现三角形及应用示例
css实现三角形,网上讲了很多,但我发现一般都是三角向上或者向下的,向左向右这两方向似乎讲得很少,本人试了一下,发现原来在IE下很难搞~~(万恶的IE)...css实现三角形的原理是:当元素的宽高为0 ...
- 关于Unity中的声音管理模块(专题七)
声音的要素 1: 音频文件AudioClip2: 音源AudioSource;3: 耳朵AudioListener;//全局只能有一个4: 2D/3D音频;//2D只是简单地播放声音,3D可以根据距离 ...
- mxnet img2rec的使用,生成数据文件
建立文件夹 制作lst文件,即生成train.lst文件python im2rec.py ./mxrec/train ./mxdata --list --recursive train.lst文件格式 ...
- python-迭代器与生成器的区别
这里涉及几个知识点:迭代器.生成器.yieId 先用个例子看一下迭代器与生成器的区别吧 #L是个list,迭代用for循环即可,L取出来是存放在内存中的,再多次去循环取出都可以>>> ...
- Mybatis表关联多对一
在上章的 一对多 中,我们已经学习如何在 Mybatis 中关联多表,但在实际项目中也是经常使用 多对一 的情况,这些查询是如何处理的呢,在这一节中我们来学习它.多表映射的多对一关系要用到 mybit ...
- c# mvc 获取 HtmlHelper 表达式值和时间格式化 去边框
/// <summary> /// 返回没有边框的只读的TextBox标签 /// </summary> /// <typeparam name="TModel ...
- Linux+Apache+PHP+MySQL服务器环境(CentOS篇)
1.前言 CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定 ...
- T4 好用的Vs扩展