博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用pull方式解析xml文件示例:
阅读量:7188 次
发布时间:2019-06-29

本文共 4668 字,大约阅读时间需要 15 分钟。

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

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

thinking in java
85.5
Spring in Action
39.0
View Code

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;    }}
View Code

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
getBooks(InputStream inputStream) throws Exception { XmlPullParser parser=Xml.newPullParser(); List
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
();//初始化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; }}
View Code

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
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; }}
View Code

转载地址:http://ouykm.baihongyu.com/

你可能感兴趣的文章
java图像裁切
查看>>
Django 1.8扩展/自定义User
查看>>
使用apache daemon让java程序在unix系统上以服务方式运行
查看>>
WampServer 3.1.0 所需VC运行库下载及安装说明
查看>>
ThinkPHP 模板魔术常量
查看>>
添加非浮动的清楚元素围住浮动元素
查看>>
CentOS挂载NTFS盘符问题
查看>>
文档里组件中的methods方法调用
查看>>
Play 2.0 用户指南 - 异步HTTP编程 --针对Scala开发者
查看>>
Swift 2.0 异常处理
查看>>
Java学习之Xml系列二:xml按条件查询、xml递归遍历所有元素和属性
查看>>
Tomcat7 redis session共享
查看>>
用逻辑运算符实现三目运算符
查看>>
php的openssl_private_encrypt的python实现
查看>>
JDK8新特性(3):Stream API补充介绍
查看>>
php连接状态测试(运行中 关闭浏览器)
查看>>
整合springMVC,Mybatis的Maven项目框架
查看>>
Keras 线性回归
查看>>
Oracle优化查询改写(第二章-给查询结果排序)
查看>>
PHP实现排列组合
查看>>