DOM和SAX解析的区别

  • Post author:
  • Post category:其他


1、定义

DOM,即Document Object Model,中文叫

文档对象模型

。DOM是W3C定义的标准

文档对象模型

,是一个与

操作系统

和编程语言无关的、用于内存存储和操作层次化文档的模型。当按 照DOM模型解析

XML文档

时,就会在内存中构造一个对应的DOM树,它可以用于不同节点之间的遍历。然而,在遍历之前必须先完成DOM树的构造。因此, 在处理规模较大的

XML文档

时就很耗内存,占用资源较多。尤其是只需要操作文档中一小部分时效率很低。

SAX,即Simple API for XML的简称,中文叫XML简单应用程序接口。它是一个事实上的标准。与DOM不同的是,它是用

事件驱动模型

。解析

XMl文档

时每遇到一个开始或者结束标 签、或者属性、或者一条指令时,程序就产生一个事件来进行相应的处理。所以在操作文档之前不需要对整个文档进行解析。实际上,文档的各个部分可以在进行解 析的同时进行操作。因此,SAX相对于DOM来说更适合操作大文档。

2、二者的区别(表格)

此外,SAX与DOM之间还有一些显著区别,包括:

DOM是复杂对象处理的首选,比如当XML比较复杂的时候,或者当你需要随机处理文档中数据的时候。SAX从文档的开始通过每一节点移动,以定位一个特定的节点。

DOM为载入到内存的文档节点建立类型描述。这些描述呈现树型结构。如果XML很冗长,DOM的结构也相应的会十分庞大。例如,一个300KB的XML文档可以导致RAM或者虚拟内存中的3G的DOM树型结构。通过比较就会发现,一个SAX文档根本就没有被解构,它也没有隐藏在内存空间中

简单来说,如何选择SAX和DOM?如果处理复杂的东西,或者相对小型的XML,使用DOM是一个不错的选择。SAX可以用来处理一个大型的XML文档,或者用于扫描和查询一个XML的结构。



版权声明:本文为captainCZY原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。