使用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 ...
随机推荐
- loadrunner 中Error和failed transaction 的区别
Down:没有运行 Pending:挂起 Init:初始化 Ready:准备就绪 Run:正在运行 Rendezvous:正在集结 Passed:运行通过 Failed:运行失败 Error:出现故障 ...
- ZARM in Linux & MIUI
zram是Linux内核的一个模块,之前被称为“compcache”.zram通过在RAM内的压缩快设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能.由于zram可以用内 ...
- android下通过app名字打开程序(activity)链接
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00004599 1.手机遥控器模拟快捷键启动app 刚开 ...
- Q-Learning
一.Q-Learning: 例子:https://www.zhihu.com/question/26408259/answer/123230350 http://ml.cs.tsinghua.edu. ...
- 车小米O2O保养平台搭建完毕
www.51chexiaomi.com 无忧车小米上线了,开展上海地区的试运营
- SQLSERVER中统计所有表的记录数
SQLSERVER中统计所有表的记录数 利用系统索引表sysindexes中索引ID indid<1的行中的rows列存有该表的行数这一特点. 方法是利用隐藏未公开的系统存储过程sp_MS ...
- (笔记)Linux下怎么安装tar.gz的软件
一般这种的就是源代码.先下载下来.然后cd到下载目录.用tar xvfz XXX.tar.gz的解压.然后进入解压后的目录. 打./configure生成配置文件.打make对源代码进行编译,生成库和 ...
- 第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念
第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念 elasticsearch的基本概念 1.集群:一个或者多个节点组织在一起 2.节点 ...
- Java条形码插件
项目中需要用条形码插件,基于Java平台的 需要比较简单,根据一个12位的数字生成一个条形码图片即可 之前一直用Google的Zxing,因为功能强大,调用简单,网上也有很多资料 后来发现,Zxing ...
- Python 获取CentOS主机信息
Python 获取主机IP地址 #!/usr/bin/env python #coding:utf-8 import os ip=os.popen("ifconfig eth0|grep ' ...