两种解析方式概述

  dom解析

  (1)是W3C组织推荐的处理XML的一种解析方式.

  (2)将整个XML文档使用类似树的结构保存在内存中,在对其进行操作.

  (3)可以方便的对XML进行增删改查的操作

  (4)需要等到XML完全加载进内存才可以进行操作

  (5)耗费内存,当解析超大的XML时慎用

  sax解析

  (1)SAX(Simple API for XML)不是官方表准,但是几乎所有的XML解析器都支持他.

  (2)逐行扫描xml文档,当遇到标签时触发解析处理器,采用事件处理的方式解析xml

  (3)在读取文档的同时即可对xml进行处理,不必等到文档加载结束,相对快捷

  (4)不需要加载进内存,因此不存在占用内存的问题,可以解析超大的XML

  (5)只能用来读取XML中数据,无法进行增删改

  dom解析

DOM: Document Object Model 文档对象模型。
        在应用程序中,基于DOM的XML解析器将一个XML文档转换成QQ一个对象模型的集合(通常称DOM树),应用程序通过对这个对象模型的操作,来实现对XML文档数据的操作。
        通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。
        DOM树所提供的随机访问方式给应用程序的开发带来了很大的灵活性,它可以任意地控制整个XML文档中的内容。
        然而,由于DOM解析器把整个XML文档转化成DOM树放在了内存中,因此,当文档比较大或结构比较复杂时,对内存的需求就比较高。
        而且,对于结构复杂的树的遍历也是一项耗时的操作。
        所以,DOM解析器对机器性能的要求比较高,实现效率不十分理想。
        由于DOM解析器所采用的树结构的思想与XML文档的结构相吻合,同时鉴于随机访问所带来的方便,因此,DOM解析器还是有很广泛的应用价值的。
总结:使用对象来封装(文档/标签/属性/标签体),使用对象和对象的关联来表示节点之间的关系.
优点:一次加载,反复使用;非常便捷的每个节点进行CRUD操作
缺点:占内存,不能解析过大的XML文档  

  sax解析

SAX的全称是Simple APIs for XML,也即XML简单应用程序接口。
        与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。
        当使用SAX解析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。
总结:采用逐行解析的方式来解析XML文档
优点:不占内存,多大的文档都能解析,逐行解析,不需要解析所有内容就可以操作,
缺点:只能进行读取,不能执行更新操作(增删改),每次查询都需要重新解析
优势:
        (1)然而,由于SAX解析器实现简单,对内存要求比较低,(SAX不必将整个XML文档加载到内存当中,所以它占据内存要比DOM小), 因此实现效率比较高。
        对于大型的XML文档来说,通常会用SAX而不是DOM。
        (2)并且对于那些只需要访问XML文档中的数据而不对文档进行更改的应用程序来说,SAX解析器更为合适。
局限性:
        (1) SAX解析器在对XML文档进行分析时,触发了一系列的事件,由于事件触发本身是有时序性的,因此,SAX提供的是一种顺序访问机制,对于已经分析过的部分,不能再倒回去重新处理。
        即,一旦经过了某个元素,我们没有办法返回去再去访问它。
        (2)SAX解析器只做了一些简单的工作,大部分工作还要由应用程序自己去做。
        也就是说,SAX解析器在实现时,只是顺序地检查XML文档中的字节流,判断当前字节是XML语法中的哪一部分、是否符合XML语法,然后再触发相应的事件,而事件处理函数本身则要由应用程序自己来实现。
        同DOM解析器相比,SAX解析器缺乏灵活性。
xml解析开发包
        Jaxp(sun,j2se)、dom4j(dom4j)

XML解析方式的更多相关文章

  1. xml解析方式之JAXP解析入门

    XML解析 1 引入 xml文件除了给开发者看,更多的情况使用[程序读取xml文件]的内容.这叫做xml解析 2 XML解析方式(原理不同) DOM解析 SAX解析 3 XML解析工具 DOM解析原理 ...

  2. XML解析方式汇总

    XML解析方式汇总 分类: XML2011-08-23 19:19 167人阅读 评论(0) 收藏 举报 xmlstringexceptionattributesclassiterator DOM解析 ...

  3. XML解析方式有哪些?

    1.DOM:要求解析器吧整个XML文档装载到内存,并解析成一个Document对象. (1).优点:元素与元素之间保留结构关系,故可以进行增删改查操作. (2).缺点:XML文档过大,可能出现内存溢出 ...

  4. Android中的三种XML解析方式

    在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的Pull解析方式.下面就对三种解析 ...

  5. java xml解析方式(DOM、SAX、JDOM、DOM4J)

    XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML ...

  6. XML解析方式与解析工具

    DOM解析原理: 1)JAXP (oracle-Sun公司官方) 2)JDOM工具(非官方) 3)Dom4J工具(非官方) 三大框架(默认读取xml的工具就是Dom4j) ....... SAX解析原 ...

  7. 带URL的XML解析方式

    XmlDocument xml = new XmlDocument(); xml.LoadXml(responseString); XmlNode root = xml.DocumentElement ...

  8. iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)

    <分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...

  9. XML有哪些解析方式有何优缺点?xml有哪些解析技术?区别是什么?

    有DOM,SAX,STAX等 (1):DOM:处理大型文件时其性能下降的非常厉害.这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XM ...

随机推荐

  1. Windows下的代码注入

    木马和病毒的好坏很大程度上取决于它的隐蔽性,木马和病毒本质上也是在执行程序代码,如果采用独立进程的方式需要考虑隐藏进程否则很容易被发现,在编写这类程序的时候可以考虑将代码注入到其他进程中,借用其他进程 ...

  2. 51Nod1782 圣诞树

    传送门 我居然忘写题解啦!(记忆废) 总的来说这题就是道大数据结构……看我代码长度就知道了,真的是长得要死…… …… 这题的操作都是路径修改单点查询,因此可以树上差分,问题就变成了维护子树中的所有标记 ...

  3. 关于输入框在谷歌浏览器 ie 浏览器中 黄色背景的去除

    谷歌有自己对input 的填充色 加上下面的css 就可以了 input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white ins ...

  4. Django_MTV模型

    创建DJango项目过程: 1:安装Django包 方式一:pip3 install django 方式二:pycharm-->file--->settings-->找到projec ...

  5. 生成证书,用于签名Android应用

    1. keytool 命令 1)使用JDK中的一个命令keytool,都有哪些命令呢,使用 keytool -help 进行查看 2)本次使用 keytool -genkeypair 命令生成签名,查 ...

  6. Python+Selenium2自动化测试之IE、chrome浏览器启动

    构建Python+Selenium2自动化测试环境完成之后,就需要测试支持python的selenium的版本是否都支持在不同浏览器上运行,当前我们分别在三个最通用的浏览器上通过脚本来测试. 1.在I ...

  7. vue + element-ui 制作下拉菜单(可配置路由、可根据路由高亮list、可刷新自动展开定位路由)

    本篇文章分享一篇关于 vue制作可路由切换组件.可刷新根据路由定位导航(自动展开).可根据路由高亮对应导航选项 一.实现的功能如下: 1.可折叠导航面板 2.点击导航路由不同组件           ...

  8. MyEclipse中关于JRE System Library、Web App Libraries的疑惑

    简要说明一下:其实,这三个都是jar包的存放集合. 1.JRE System Library主要存放J2SE的标准jar,一般不需要调整. 2.Referenced Libraries是存放第三方的j ...

  9. Oracle日常性能查看

    判断回滚段竞争的SQL语句:(当Ratio大于2时存在回滚段竞争,需要增加更多的回滚段)select rn.name, rs.GETS, rs.WAITS, (rs.WAITS / rs.GETS) ...

  10. CefSharp 浏览器核心,爬虫

    CefSharp是什么 A framework for embedding web-browsing-like capabilities to a standard .NET application ...