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的结构。