DOM与SAX解析xml的区别
来源:互联网 发布:ipadair2不能下载软件 编辑:程序博客网 时间:2024/04/29 03:54
SAX概念
SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。
与DOM比较而言,SAX是一种轻量型的方法。我们知道,在处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象。当文档比较小的时候,这不会造成什么问题,但是一旦文档大起来,处理DOM就会变得相当费时费力。特别是其对于内存的需求,也将是成倍的增长,以至于在某些应用中使用DOM是一件很不划算的事(比如在applet中)。这时候,一个较好的替代解决方法就是SAX。
SAX在概念上与DOM完全不同。首先,不同于DOM的文档驱动,它是事件驱动的,也就是说,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。(如果你对Java新的代理事件模型比较清楚的话,就会很容易理解这种机制了)
在XMLReader接受XML文档,在读入XML文档的过程中就进行解析,也就是说读入文档的过程和解析的过程是同时进行的,这和DOM区别很大。解析开始之前,需要向XMLReader注册一个ContentHandler,也就是相当于一个事件监听器,在ContentHandler中定义了很多方法,比如startDocument(),它定制了当在解析过程中,遇到文档开始时应该处理的事情。当XMLReader读到合适的内容,就会抛出相应的事件,并把这个事件的处理权代理给ContentHandler,调用其相应的方法进行响应。
SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。
与DOM比较而言,SAX是一种轻量型的方法。我们知道,在处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象。当文档比较小的时候,这不会造成什么问题,但是一旦文档大起来,处理DOM就会变得相当费时费力。特别是其对于内存的需求,也将是成倍的增长,以至于在某些应用中使用DOM是一件很不划算的事(比如在applet中)。这时候,一个较好的替代解决方法就是SAX。
SAX在概念上与DOM完全不同。首先,不同于DOM的文档驱动,它是事件驱动的,也就是说,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。(如果你对Java新的代理事件模型比较清楚的话,就会很容易理解这种机制了)
在XMLReader接受XML文档,在读入XML文档的过程中就进行解析,也就是说读入文档的过程和解析的过程是同时进行的,这和DOM区别很大。解析开始之前,需要向XMLReader注册一个ContentHandler,也就是相当于一个事件监听器,在ContentHandler中定义了很多方法,比如startDocument(),它定制了当在解析过程中,遇到文档开始时应该处理的事情。当XMLReader读到合适的内容,就会抛出相应的事件,并把这个事件的处理权代理给ContentHandler,调用其相应的方法进行响应。
- DOM与SAX解析xml的区别
- DOM与SAX解析xml的区别
- SAX与DOM解析XML的区别
- XML编程中dom解析与sax解析的区别
- 黑马程序员 - SAX与DOM解析XML的区别
- SAX与DOM 解析XML文件的区别
- DOM和SAX解析XML的区别
- SAX和Dom解析XML的区别
- dom解析与sax解析的区别
- DOM解析与SAX解析的区别
- SAX解析与DOM解析的区别
- xml文件的解析解析方式及Dom解析与Sax解析的区别
- JavaWeb - XML - DOM与SAX的区别
- SAX与DOM解析XML
- XML解析SAX与DOM
- XML中两种解析方法 DOM 与 SAX 区别
- 关于XML的SAX解析与DOM解析优劣性
- SAX和DOM解析的xml的区别
- 任务栈和返回堆栈
- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)
- setfill、setw 和 setprecision
- Drag & Drop (二)
- ExtJS4新发现01_event和method的区别
- DOM与SAX解析xml的区别
- 在spring中集成webservice 框架 CXF
- Drag & Drop (三)
- QQ游戏百万人同时在线服务器架构实现
- socket学习之服务端图形界面
- ls 命令结果重定向
- 建造者模式——Builder
- 用freemarker生成静态页面
- 数学之美番外篇:平凡而又神奇的贝叶斯方法