Android中使用pull解析xml文件

本文介绍了一种在Android中使用Pull解析方式处理XML文件的方法。通过具体的代码示例,展示了如何利用XmlPullParserFactory和XmlPullParser类来遍历并解析XML文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中解析Xml文件大致有三种,这里我着重介绍使用pull的方式解析xml文件。

首先我们需要了解xml文件的格式,以下是一个最简单的示例

<?xml version="1.0" encoding="UTF-8"?> 
<books>
   <book>
       <name>围城</name>
       <author>钱钟书</author>
   </book>
   <book>
       <name>平凡的世界</name>
       <author>路遥</author>
   </book>
   <book>
       <name>穆斯林的葬礼</name>
       <author>霍达</author>
   </book>
</books>

以上是一个封装这书籍信息的简单的xml文件,我将以这个文件为例来通过pull方法解析改xml文件

pull的解析方法主要用到两个类,分别是XmlPullParserFactory和XmlPullParser,其中XmlPullParserFactory相当于工厂类来产生XmlPullParser对象,而XmlPullParser对象主要用来解析。

以下是解析过程,前提是我们已经有了book的实体类。

private void parseXml() {
Book book=null;
try {
InputStream inputStream=getResources().getAssets().open("books.xml");
//得到一个XmlPullParserFactory对象
XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();
//得到XmlPullParser对象
XmlPullParser pullParser=pullParserFactory.newPullParser();
pullParser.setInput(inputStream, "UTF-8");
int event=pullParser.getEventType();
//假如没有到文档的末尾,则继续循环
while(event!=XmlPullParser.END_DOCUMENT){
String nodeName=pullParser.getName();
switch(event){
case XmlPullParser.START_DOCUMENT:
//文档的开始处
//一帮在文档的最开头处需要构建容纳解析到的对象的容器
books=new ArrayList<Book>();
break;
case XmlPullParser.START_TAG:
if("book".equals(nodeName)){
//在book标签的开始出需要构建对象
book=new Book();
}
if("name".equals(nodeName)){
book.setBookName(pullParser.nextText());
}
if("author".equals(nodeName)){
book.setBookAuthor(pullParser.nextText());
}
break;
case XmlPullParser.END_TAG:
if("book".equals(nodeName)){
//将封装好的对象放到集合中
books.add(book);
}
break;
}
event=pullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}

}

pull解析过程实际上是遍历文档的形式,通过parse.next()来获得下一个解析事件,同时可以通过parse.nextText()来获取标签之间的文本值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值