03_android入门_常见的xml解析模式_DOM和SAX解析

1.DOM解析

   1)DOM解析的时候,首先要把整个文件读取完毕,装载到内存中。然后再进行解析,在解析的过程,你可以直接获取某个节点,进行操作,也可以获取根节点然后进行遍历操作,得到所有的节点内容。

   2)适用于:解析小型的xml文件。

   3)可以通过若干种方法来查找您希望操作的元素:

         document.getElementById(elementId)

         document.getElementsByTagName(tagname)

         document.getElementsByTagNameNS(namespaceURI,localName)

 

2.SAX解析

     1)SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。

    2)常见的事件处理器有三种基本类型:
          用于访问XML DTD内容的DTDHandler;
          用于低级访问解析错误的ErrorHandler;
          用于访问文档内容的ContentHandler,这也是最普遍使用的事件处理器。
 
3、面试题
1)常见的xml解析方式有哪些?
      DOM、SAX、DOM4j。
 
2)DOM与SAX解析方式的优缺点分别是什么?
【1】DOM:
           优点:易用性强,使用DOM时,将把所有的XML文档信息都存于内存中,并且遍历简单,支持XPath,增强了易用性。
           缺点:效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外效率低还表现在大量的消耗时间,因为使用DOM进行解析时,将为文档的每个element、attribute、processing-instrUCtion和comment都创建一个对象,这样在DOM机制中所运用的大量对象的创建和销毁无疑会影响其效率。
【2】SAX:
           优点:内存消耗小,因为整个文档无需一次加载到内存中,这使SAX解析器可以解析大于系统内存的文档。另外,你无需像在DOM中那样为所有节点创建对象。
           缺点:你必须实现多个事件处理程序以便能够处理所有到来的事件,同时你还必须在应用程序代码中维护这个事件状态,因为SAX解析器不能交流元信息,如DOM的父/子支持,所以你必须跟踪解析器处在文档层次的哪个位置。如此一来,你的文档越复杂,你的应用逻辑就越复杂。
 
3)DOM与SAX解析方式的区别有哪些?
      DOM把所有的XML文档信息都存于内存中;
      SAX无需一次把xml文件加载到内存中,采用的是事件驱动的操作;
      DOM应用场景:对于大文件来说几乎不可能使用;
      DOM可以直接获取某个节点的操作。
 
4)
 节点名称节点值节点类型值
 nodeNamenodeValuenodeType
元素节点标签名null1
属性节点属性名属性值2
文本节点#text文本值3
    
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值