博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之使用pull解析XML文件
阅读量:6670 次
发布时间:2019-06-25

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

hot3.png

Android已经集成进了Pull解析器,所以无需添加任何jar文件。android系统本身使用到的各种xml文件,其内部也是采用Pull解析器进行解析的。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是, Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。

pull解析xml步骤主要如下:

假设解析下列xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<persons>

       <person id=“18">

              <name>allen</name>

              <age>36</age>

       </person>

       <person id=“28">

              <name>james</name>

              <age>25</age>

       </person>

</persons>

1)获得pull解析器对象

XmlPullParser parser = Xml.newPullParser();

2)指定解析的文件和编码格式

parser.setInput(fis, "utf-8");

3)获得事件类型(获得各标签类型)

int eventType = parser.getEventType();

4)根据各标签信息进行必要数据的读取

while(eventType != XmlPullParser.END_DOCUMENT) {

//没有到结束标签

String tagName = parser.getName();      // 获得当前节点的名称

switch (eventType) {

        case XmlPullParser.START_TAG: // 当前等于开始节点<person>

                                   if("persons".equals(tagName)) {  // <persons>

                              //相关操作

                                   } else if("person".equals(tagName)) { // <person id="1">

                                   //相关操作

                                   } else if("name".equals(tagName)) { // <name>

                                          person.setName(parser.nextText());

                                   } else if("age".equals(tagName)) { // <age>

                                   //相关操作

                                   }

                                   break;

                            case XmlPullParser.END_TAG:       //读取结束 </persons>

                                   if("persons".equals(tagName)) {

                //相关操作

                                   }

                                   break;

                            default:

                                   break;

                            }

                  eventType = parser.next();// 下一个

              }

转载于:https://my.oschina.net/u/2448717/blog/500515

你可能感兴趣的文章
当Elasticsearch遇见Kafka
查看>>
2018年第40周-scala入门-工具使用
查看>>
微信小程序快速入门分享大纲
查看>>
深度介绍:
查看>>
30行代码消费腾讯人工智能开放平台提供的自然语言处理API
查看>>
微信小程序初体验,入门练手项目--通讯录,后台是阿里云服务器
查看>>
form中只有一个input时自动提交问题
查看>>
面试官:说说快速失败和安全失败是什么
查看>>
node.js中常用的fs文件系统
查看>>
你不知道的Virtual DOM(三):Virtual Dom更新优化
查看>>
Java抽象类与接口的区别
查看>>
初始化移动样式
查看>>
在vue项目中使用vuex
查看>>
pug学习
查看>>
Java知识点总结(注解-自定义注解)
查看>>
selenium Headless Chrome/Firefox--PhantomJS停止支持后,使用无界面模式
查看>>
服务器从零开始(1D)-user+sudo+vnc
查看>>
一张图让自己搞懂(mēng)原型&原型链
查看>>
阿里云负载均衡配置的坑
查看>>
Mybatis N+1问题解析
查看>>