【第22期】观点:IT 行业加班,到底有没有价值?

浅析 - Android Xml解析方式

原创 2016年08月28日 21:50:59

尊重每个人的付出,转载请点这里: http://blog.csdn.net/hanj456/article/details/52348107

Xml解析

要点:xml解析方式有:dom解析,sax解析,pull解析。

dom:

DOM是基于树形结构的的节点或信息片段的集合进行解析,分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息。相对其他两种方式来说该解析方式不够灵活,解析大的文档时会很耗费资源,效率低。

sax:

SAX是一种基于事件的解析器,解析方式为从文件的开始顺序解析到文档的结束,不可暂停或倒退,主要是围绕着事件源以及事件处理器来工作的。该解析方式的优点是解析速度快,占用内存少。

pull:

PULL解析器的运行方式和SAX类似,都是基于事件的模式。不同的是,在PULL解析过程中返回的是数字,且我们需要自己获取产生的事件然后做相应的操作,而不像SAX那样由处理器触发一种事件的方法,执行我们的代码。

PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器,Android官方推荐开发者们使用Pull解析技术。Pull解析技术是第三方开发的开源技术,它同样可以应用于JavaSE开发。这里着重介绍一下pull解析器的使用方法:

使用示例

第一步:创建 pull解析器

XmlPullParser xpp = Xml.newPullParser(); 

第二步:设置编码方式

xpp.setInput(is,"UTF-8"); 

第三步:获取事件类型

int eventType = xpp.getEventType();

第四步:根据节点开始解析

while (eventType != XmlPullParser.END_DOCUMENT){  
             switch (eventType) {   
                         case XmlPullParser.START_DOCUMENT:  
                             mList = new ArrayList<Book>(); 
                             break;  
                         case XmlPullParser.START_TAG:  
                             if (xpp.getName().equals("book")) {
                                 book = new Book();  
                             } else if (xpp.getName().equals("name")) {  
                                 eventType = xpp.next();
                                 book.setName(xpp.getText());  
                             } else if (xpp.getName().equals("price")) {
                                 eventType = xpp.next();
                                 book.setPrice(xpp.getText());  
                             }   
                             break;  
                         case XmlPullParser.END_TAG:  
                             if (xpp.getName().equals("book")) {
                                 mList.add(book);  
                                 beauty = null;  
                             }  
                             break;  
                         }  
                         // 进入下一个元素并触发相应事件  
                         eventType = xpp.next();  
                     }  
                     return mList;  
        }  
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)

Android View    绘制流程的三个步骤,即:                       1、  measure过程 --- 测量过程                      ...

Android 创建与解析XML(四)—— Pull方式

1、Pull概述 Android系统中和创建XML相关的包为org.xmlpull.v1,在这个包中不仅提供了用于创建XML的XmlSerializer,还提供了用来解析XML的Pull方式解析器XmlPullParser XmlSerializer没有像XmlPullParser那样提取XML事件...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

【转载】Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)

本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning         在之前一篇博文中 Android中View绘制流程以...

浅析 - Android Xml解析方式

转载请注明出处: Xml解析 要点:xml解析方式有:dom解析,sax解析,pull解析。 dom:DOM是基于树形结构的的节点或信息片段的集合进行解析,分析该结构通常需要加载整个文档和构造树形...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)