首页 > 代码库 > DOM和SAX的比较
DOM和SAX的比较
1.DOM和SAX的区别:
1)dom把所有的xml文档信息都存于内存中
sax无需一次把xml文件加载到内存中,采用的是事件驱动的操作
2)dom应用场景:对于大文件来说几乎不可能使用
dom可以直接获取某个节点的操作Document.get,而sax不可以
2.DOM和SAX的优缺点:
DOM的优势主要表现在:易用性强,使用DOM时,将把所有的XML文档信息都存于内存中,并且遍历简单,支持XPath,增强了易用性。
DOM的缺点主要表现在:效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用,另外效率低还表现在大量的消耗时间。(因为使用DOM进行解析时,将为文档的每个element、attribute、processing-instrUCtion和comment都创建一个对象,这样在DOM机制中所运用的大量对象的创建和销毁无疑会影响其效率。)
SAX模型最大的优点是内存消耗小,因为整个文档无需一次加载到内存中,这使SAX解析器可以解析大于系统内存的文档。
SAX的缺点是你必须实现多个事件处理程序以便能够处理所有到来的事件,同时你还必须在应用程序代码中维护这个事件状态,因为SAX解析器不能交流元信息,如DOM的父/子支持,所以你必须跟踪解析器处在文档层次的哪个位置。如此一来,你的文档越复杂,你的应用逻辑就越复杂。它没有内置如XPath所提供的那些导航支持。
另:常用的xml解析方式:SAX,DOM,DOM4j,jDom:
SAX是一个用于处理XML事件驱动的“推”模型,虽然它不是W3C标准,但它却是一个得到了广泛认可的API。SAX解析器不像DOM那样建立一个完整的文档树,而是在读取文档时激活一系列事件,这些事件被推给事件处理器,然后由事件处理器提供对文档内容的访问。
常见的事件处理器有三种基本类型:
● 用于访问XML DTD内容的DTDHandler;
● 用于低级访问解析错误的ErrorHandler;
● 用于访问文档内容的ContentHandler,这也是最普遍使用的事件处理器。
DOM 是 W3C(万维网联盟)的标准。DOM 定义了访问 HTML 和 XML 文档的标准:"W3C文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。"
W3CDOM 标准被分为 3 个不同的部分:
● 核心 DOM - 针对任何结构化文档的标准模型
● XMLDOM - 针对 XML 文档的标准模型
● HTMLDOM - 针对 HTML 文档的标准模型
DOM 是 Document Object Model(文档对象模型)的缩写。
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。它的主要接口都在org.dom4j这个包里定义。