浅析 - 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中XML的三种解析方式

XML解析方式Android 提供了三种解析XML的方式:SAX(Simple API XML), DOM(Document Object Model), Pull...
  • WILLMAX_007
  • WILLMAX_007
  • 2016年05月15日 14:30
  • 5156

Android中xml 解析三种方式的区别

SAX、DOM、PULL的比较 SAX、DOM、PULL各有自己的特点,具体操作XML的时候该如何选择呢? 1.内存占用 这是一个根本性问题。由于Android手机性能相对于现在的应用操作还是有...
  • skibug
  • skibug
  • 2015年08月19日 11:36
  • 2997

Android解析XML的三种方式

在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的Pull解析方式. 如图: ...
  • d_shadow
  • d_shadow
  • 2017年02月16日 11:28
  • 1191

Android:解析XML的三种方式

1、首先,在布局文件中写一个Button控件和用来展示数据的ListView控件。 ...
  • AbbyDream
  • AbbyDream
  • 2017年02月27日 16:01
  • 634

XML的三种解析方式优缺点比较

XML的三种解析方式,在此对它们优缺点简单比较 1、DOM 优点:是 W3C 处理 XML 的标准,并且有很多语言都支持这种解析方式,实际操作十分简单,对于初学者来说很容易上手...
  • u014005472
  • u014005472
  • 2014年03月09日 21:21
  • 1365

解析xml的四种方式

解析xml的四种方式
  • xinyuan_java
  • xinyuan_java
  • 2017年03月26日 00:10
  • 1928

Android三种解析XML方式

XML三种解析方式
  • u011310942
  • u011310942
  • 2014年02月18日 21:49
  • 3107

Android基础——XML数据的三种解析方式

Android基础——XML数据的三种解析方式 本篇文章包含以下内容: XML数据的Dom解析 XML数据的Sax解析 XML数据的Pull解析 Activity中使用...
  • qq_30379689
  • qq_30379689
  • 2016年11月15日 13:36
  • 6919

Android几种解析XML方式的比较

XML介绍:Extensible Markup Language,即可扩展标记语言 一、使用SAX解析XMLSAX(Simple API for XML) 使用流式处理的方式,它并不记录所读内容的相关...
  • isee361820238
  • isee361820238
  • 2016年08月30日 17:32
  • 7853

Android中的三种XML解析方式的差异和比较

1.  首先介绍SAX解析,SAX是事件驱动型XML解析的一个标准接口不会改变SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结...
  • tianyeming
  • tianyeming
  • 2015年07月27日 09:57
  • 998
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅析 - Android Xml解析方式
举报原因:
原因补充:

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