SAX解析与DOM解析对比

DOM:即Document Object Model,属于文档驱动。解析处理XML文件时,需要读取整个XML文档,存在内存中并建立DOM树,生成DOM树上的每个Node对象。DOM树生成后,可以随意存放或读取文件树的任何部分,并且可以重复读取,没有次数限制。

SAX:即Simple Api for XML,属于事件驱动,不需要读入整个文档,读入文档的过程也是SAX解析的过程,事件驱动是指一种基于回调(callback)机制的程序运行方法。SAX对内存要求比较低,因为它让开发人员自己决定所要处理的标签,尤其是当开大人员需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。

综上:

DOM优缺点:可以读取以及修改文件树任何部分,但是由于解析之前需要把文档存至内存中并生成文档树(生成文档树比较耗时),所以解析速度较慢以及占用内存较大,适合解析中小型文档。

  SAX优缺点:只能顺序访问读取,不能修改,可以部分读取文档,故解析速度快,适合解析大型文档,但由于需要建立自己额XML对象模型,增加了开发难度。

时间: 2024-12-28 17:44:36

SAX解析与DOM解析对比的相关文章

Java学习总结(21)——XML文档解析:DOM解析,SAX解析

一.XML简介1.可扩展性标记语言(eXtensible Markup Language)2.XML用于描述数据3.应用场合:(1)持久化存储数据(2)数据交换(3)数据配置4.XML语法(1)文档类型:在编写XML文档时,需要先使用文档声明,声明XML文档的类型.最简单的声明语法:<?Xml version="1.0" ?>用encoding属性说明文档的字符编码:<?Xml version="1.0" encoding="GB2312

Java---XML的解析(1)-DOM解析

本章只讲DOM解析.接下来还会学习Dom4j和StAX 解析技术 DOM解析: DOM解析一次将所有的元素全部加载到内存中:如有以下XML文档: <user> <name>Jack</name> <age>30</age> </user> 由于DOM解析,一次性的将所有元素(包含属性和文本) 全部加载到内存中,所以不适用于解析大量的数据. JAXP-DOM解析: 包: javax.xml.parse – 关键类DocumentBuil

SAX解析与DOM解析

SAX解析实例:http://www.iteye.com/topic/763895 Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类,一种是ElementNode,一种是TextNode. 为了更好地解决大型 XML 处理的问题,Java 开发人员发明了 SAX.SAX 采用事件驱动的方式来处理 XML,它的处理方式是:为每一个元素.属性.内容(这些都认为是事件)定义一个回调方法,这个回调方法由应用程序提供.解析器以数据流的方式

xml解析之----DOM解析

DOM模型(documentobject model) ?DOM解析器在解析XML文档时,会把文档中的全部元素.依照其出现的层次关系.解析成一个个Node对象(节点). ?在dom中.节点之间关系例如以下: ?位于一个节点之上的节点是该节点的父节点(parent) ?一个节点之下的节点是该节点的子节点(children) ?同一层次,具有同样父节点的节点是兄弟节点(sibling) ?一个节点的下一个层次的节点集合是节点后代(descendant) 父.祖父节点 lNode对象提供了一系列常量来

XML文件解析之DOM解析

XML文件是一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.基本的解析方式包括DOM解析和SAX解析,具体来说包括DOM解析,SAX解析,DOM4J解析以及JDOM解析,首先来讲下DOM解析的具体实现方式: 1.重要的对象 DocumentBuilderFactory: 创建文档解析器的工厂对象 DocumentBuilder :得到文档解析器对象,由工长对象获取 Document :文档对象 2.解析XML实现方式 XML文件: <?xml v

XML解析之DOM解析技术案例

Java代码: package com.xushouwei.xml; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.No

XML解析中DOM解析如何使用第三方的类库

* DOM解析使用Google提供的一个开源高效的XML解析工具GDataXMLNode,他的效果要比NSXMLParser要快10倍 使用方式: 1:先倒入系统动态链接库 libxml2.2.dylib 在项目的Targets – Summary – Linked Frameworks and Libraries或者在Targets – Build Phases – Link Binary With Libraries添加libxml2.2.dylib 2:在bulidSettings中的He

XML文件解析之--DOM与SAX

xml文件又称‘可扩展性标记语言’,可以对文档和数据进行结构化处理,从而能够在部门.客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发. 我们在进行web开发的时候离不开xml文件,xml文件无处不在,这次就烂讨论一下xml常用的解析方法及其CRUD操作,欢迎大家交流指正. 我们先来看看两种解析方式的过程,比较一下他们的优劣之处. SAX解析方式:它对xml文档进行逐行扫描,一边扫描一边解析.当扫描到文档(document)开始与结束.元素(element)开始与结束.文档(docu

XML解析之DOM ,SAX解析区别

环境配置:导入GDataXMLNode.h 文件 1.导入GDataXMLNode.h 文件时,需要导入动态库 libxml2.2.tbd 动态库 , 2.再在Build setting下面找到 Header Search Paths ,插入 /usr/include/libxml2 3. 最后在Build Phases中的Compile Sources 下找到GDataXMLNode.m文件,在后面加上 -fno-objc-arc  因为这个三方是MRC环境的 SAX解析和DOM解析的区别: