XML--DOM解析和SAX解析的特点
程序员文章站
2022-05-22 16:36:05
...
XML--DOM解析和SAX解析的特点和差别
1、 DOM解析 – 文档对象模型解析 .是W3C指定的一套规范标准,它不是专门为Java或其他语言而制定的 核心是按树形结构处理数据,要先将所有文件读取到内存中形成DOM树,DOM解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树的节点和xml各标记对应,通过操纵此“树”来处理xml中的文件。 优点: 1.DOM同时支持读和写 2.可以对树进行遍历,可直接访问节点,访问效率高 3.可以随时访问树中的节点,并能进行增删查改 缺点: xml文件很大时,建立的“树”也会大,所以会大量占用内存。 解析速度慢,只适合解析小型文档(要在内存中生成节点树,而生成树是比较费时的) 耗费系统的内存资源 2、SAX解析 核心是事件处理机制,解析器根本不创建任何对象,它只是将事件传递给您的应用程序 一次性的处理方式 优点: 1.边读边解析,以流的方式读XML,应用于大型XML文档 2.解析速度快 3. 不必解析整个文档;它可以在某个条件得到满足时停止解析。 缺点: 只支持读,不能修改, 只能顺序解析, 访问效率低 区别: 1、DOM是基于内存的,不管文件有多大,都会将文件的内容事先装载到内存中,因 而需要占很大的内存空间。 SAX基于事件,当事件被触发时,从头开始解析文件,无需事先装载,当获得需要的数据,即可停止,所以占用内存空间很少 2. DOM 可以读取XML,也可以向XML文档中插入数据 SAX 只能对XML 进行读取,不能插入数据(sax的缺点) 3. DOM 可以访问指定的元素进行随机访问 SAX 只能从头开始执行,顺序解析,只进行一次。
1、 DOM解析 – 文档对象模型解析 .是W3C指定的一套规范标准,它不是专门为Java或其他语言而制定的 核心是按树形结构处理数据,要先将所有文件读取到内存中形成DOM树,DOM解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树的节点和xml各标记对应,通过操纵此“树”来处理xml中的文件。 优点: 1.DOM同时支持读和写 2.可以对树进行遍历,可直接访问节点,访问效率高 3.可以随时访问树中的节点,并能进行增删查改 缺点: xml文件很大时,建立的“树”也会大,所以会大量占用内存。 解析速度慢,只适合解析小型文档(要在内存中生成节点树,而生成树是比较费时的) 耗费系统的内存资源 2、SAX解析 核心是事件处理机制,解析器根本不创建任何对象,它只是将事件传递给您的应用程序 一次性的处理方式 优点: 1.边读边解析,以流的方式读XML,应用于大型XML文档 2.解析速度快 3. 不必解析整个文档;它可以在某个条件得到满足时停止解析。 缺点: 只支持读,不能修改, 只能顺序解析, 访问效率低 区别: 1、DOM是基于内存的,不管文件有多大,都会将文件的内容事先装载到内存中,因 而需要占很大的内存空间。 SAX基于事件,当事件被触发时,从头开始解析文件,无需事先装载,当获得需要的数据,即可停止,所以占用内存空间很少 2. DOM 可以读取XML,也可以向XML文档中插入数据 SAX 只能对XML 进行读取,不能插入数据(sax的缺点) 3. DOM 可以访问指定的元素进行随机访问 SAX 只能从头开始执行,顺序解析,只进行一次。
推荐阅读
-
深入解析C++和JAVA的字符串
-
php include和require的区别深入解析
-
Java基础学习总结(129)——Arrays.asList得到的List进行add和remove等操作出现异常解析
-
Spring的初始化和XML解析的实现
-
从源码角度简单看StringBuilder和StringBuffer的异同(全面解析)
-
C#中委托和事件的区别实例解析
-
c#方法中调用参数的值传递方式和引用传递方式以及ref与out的区别深入解析
-
java简单解析xls文件的方法示例【读取和写入】
-
Android MeasureSpec的理解和源码的解析
-
深入解析StringBuffer和StringBuilder的区别