博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android:读取assets目录下文件(二)
阅读量:5117 次
发布时间:2019-06-13

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

在上篇博客里,介绍了如何读取assets目录下的txt文件。在这里,介绍如何读取xml文件。

xml文件内容如下:

Harry Potter
¥35.00
Learning XML
¥66.00
Thinking in Java
¥1.00
Useful Android
¥1.50

根据xml文件,接下来定义一个Book类,有id, title, price三个属性。

然后使用一个子线程,通过AssetManager读取到数据流,再使用XmlPullParser解析xml文件。

完整示例代码如下:

package com.li.readassetfile;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import android.app.Activity;import android.content.res.AssetManager;import android.content.res.XmlResourceParser;import android.os.Bundle;import android.os.Handler;import android.util.Xml;import android.widget.TextView;public class ReadXmlActivity extends Activity {
private TextView tvContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_read_xml); tvContent = (TextView) findViewById(R.id.tvContent); new Handler().post(new Runnable() { @Override public void run() { AssetManager manager = getResources().getAssets(); List
books = null; Book book = null; try { InputStream inputStream = manager.open("book.xml"); XmlPullParser parser = Xml.newPullParser(); parser.setInput(inputStream, "UTF-8"); StringBuilder sb = new StringBuilder(); try { while(parser.getEventType() != XmlPullParser.END_DOCUMENT){ if(parser.getEventType() == XmlPullParser.START_DOCUMENT){ books = new ArrayList
(); }else if(parser.getEventType() == XmlPullParser.START_TAG){ if("book".equals(parser.getName())){ book = new Book(); book.setId(parser.getAttributeValue(0)); } if(book!=null){ if("title".equals(parser.getName())){
//判断开始标签元素是否是name book.setTitle(parser.nextText()); }else if("price".equals(parser.getName())){
//判断开始标签元素是否是price book.setPrice(parser.nextText()); } } }else if(parser.getEventType() == XmlPullParser.END_TAG){ if("book".equals(parser.getName())){
//判断结束标签元素是否是book books.add(book);//将book添加到books集合 book = null; } } parser.next(); } if(books != null && books.size() > 0){ for(int i = 0; i < books.size(); i ++){ sb.append(books.get(i).getId() + "\b\b"); sb.append(books.get(i).getTitle() + "\b\b"); sb.append(books.get(i).getPrice() + "\b\b"); sb.append("\n"); } } inputStream.close(); tvContent.setText(sb.toString()); } catch (XmlPullParserException e) { e.printStackTrace(); } } catch (IOException | XmlPullParserException e) { e.printStackTrace(); } } }); } private class Book{
private String id; private String title; private String price; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } }}

使用完,要注意关闭数据流。为了防止ANR,所以这里使用子线程来读取xml文件。

转载于:https://www.cnblogs.com/lishbo/p/9956021.html

你可能感兴趣的文章
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
HTML+CSS学习笔记(九)
查看>>
Java泛型的基本使用
查看>>
1076 Wifi密码 (15 分)
查看>>
rsync
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
Blog文章待看
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>