前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xml文件的解析解析方式及Dom解析与Sax解析的区别

xml文件的解析解析方式及Dom解析与Sax解析的区别

作者头像
MonroeCode
发布2018-01-12 18:03:53
1.7K0
发布2018-01-12 18:03:53
举报
文章被收录于专栏:Java技术分享

一、简单概述你常见的xml解析方式

①Dom

②Sax

③Dom4j

④pull解析器(Android)

二、Dom解析与Sax解析的区别

1.Dom解析:

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

优点:易用性强,使用Dom时,将把所有的XML文档信息都存于文档中,并且遍历简单,增强了易用性。

缺点:效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外效率低还表现在大量的消耗时间,因为使用Dom进行解析时,将为文档的每个element、attribute、processing-instrUCtion和comment都创建一个对象,这样Dom机制中所运用的大量对象的创建和销毁无疑会影响其效率。

下图是在进行Dom解析时Node节点的类型,共有12种,以下是前三种。

2.Sax解析

   Sax解析时不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。

优点:内存消耗小,因为整个文档无需一次加载到内存中,这使Sax解析器可以解析大于系统内存的文档。

缺点:必须实现多个时间处理程序以便能够处理所有到来的事件,同时你还必须在应用程序代码中维护这个事件状态,因为Sax解析器不能交流元信息,所以你必须跟踪解析器处在文档层次的哪个位置。如此一来,你的文档越复杂,你的应用逻辑也越复杂。

3.区别

①读取方式:Dom需要把所有的XML文档信息都存于内存中。

                        Sax无需一次把xml文件加载到内存中,采用的是事件驱动的操作。

②应用场景:Dom几乎不可以使用于大的文件

                        Sax则视情况而定

③获取节点:Dom可以直接获取

document.getElementById(elementId)

document.getElementsByTagName(tagname)

document.getElementsByTagNameNS(namespaceURI, localName)

Sax需要处理所有到来的事

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简单概述你常见的xml解析方式
  • 二、Dom解析与Sax解析的区别
    • 1.Dom解析:
      • 2.Sax解析
      • 3.区别
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档