两种解析方式概述

  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. 如何去除vue项目中的 # — vue路由的History模式

    前言 在创建的 router 对象中,如果不配置 mode,就会使用默认的 hash 模式,该模式下会将路径格式化为 #! 开头. 添加 mode: 'history' 之后将使用 HTML5 his ...

  2. cocos-creator 脚本逻辑-2

    1.预制体 1)节点操作 Cc.find(‘node-1’) 获取节点 全局事件 作用于 canvas this.node.destroy() 删除节点(从内存中删除) 添加删除获取节点或组件 let ...

  3. 00HTML

    一.概述 超文本标记语言(Hyper Text Markup Language),HTML是一门描述性的语言.基本语法: <标签> 内容 </标签>** 在一个网页中,HTML ...

  4. 无法远程访问Mysql的解决方案

    现在在很多的互联网公司对于mysql数据库的使用已经是不可阻挡的趋势了,所以经常我们在项目开始的时候就会做的事情就是找一台Linux服务器,到上面去安装个mysql,然后在开始我们的数据表的导入工作, ...

  5. 关于webuploader 在ie9上不能触发 input 的 change 事件

    上传文件用了 webuploader,ie9以上及其它浏览器正常执行js ,但是在ie9上点击input 无效,不能触发change 事件. 第一反应是ie9 需要使用flash 上传文件 原因: . ...

  6. Linux基础之-元字符

    Bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义,强调一点:元字符是被shell解释的. 1. '',取命令的执行结果 [root@MiWiFi-R3-srv ~]# ls4.txt an ...

  7. 【阿里云产品公测】OpenSearch初体验

    OpenSearch是一个非常有意义的功能,对于很多数据量较大的站点, SF2<   如果搜索功能自己做的话,或者用数据库里的查询语句,首先效率低下,而且占用资源. ); <Le6   另 ...

  8. DevExpress中 TreeList控件的常规配置

    //以下为TreeList控件样式相关设置 this.treelist_SystemCfg.BackColor = Color.Transparent; this.treelist_SystemCfg ...

  9. Linux->ZooKeeper集群搭建

    人,总免不了有心结,限制着自己,难以前行.对于ZooKeeper的理解,以及实践也拖了很久,今天用零散时间学习一下,补点干货. 一.简述 Zookeeper是Google的Chubby一个开源的实现, ...

  10. 使用UIWebView中html标签显示富文本

    使用UIWebView中html标签显示富文本 用UIWebView来渲染文本并期望达到富文本的效果开销很大哦! Work 本人此处直接加载自定义字体"新蒂小丸子体",源码不公开, ...