浅析 - 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;  
        }  
版权声明:本文为博主原创文章,未经博主允许不得转载。

XML的四大解析方式浅析

整理xml解析的四大方式

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

在之前一篇博文中 Android中View绘制流程以及invalidate()等相关方法分析>>,简单的阐述 了Android View   绘制流程的三个步骤,即:                 ...

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

本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning         上篇文章Android中measure过程、WRAP_CONTENT详解以及...

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

在之前一篇博文中 Android中View绘制流程以及invalidate()等相关方法分析>>,简单的阐述 了Android View    绘制流程的三个步骤,即:    ...

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

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

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

本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning         上篇文章Android中measure过程、WRAP_CON...
  • jozzss
  • jozzss
  • 2015年03月26日 11:30
  • 214

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

本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning        上篇文章Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流...

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

今天,我着重讲解下如下三个内容: measure过程WRAP_CONTENT、MATCH_PARENT/FILL_PARENT属性的原理说明xml布局文件解析成View树的流程分析。 希望...

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

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

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

本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning        在之前一篇博文中 Android中View绘制流程以及invalidate()等相关方法分析>>...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅析 - Android Xml解析方式
举报原因:
原因补充:

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