📜  JavaSAX 解析器和 DOM 解析器的区别

📅  最后修改于: 2021-09-10 03:04:47             🧑  作者: Mango

有两种类型的 XML 解析器,即 XML 的简单 API 和文档对象模型。

SAX(XML 的简单 API)是Java最广泛采用的 XML API,被认为是事实上的标准。虽然它最初是作为Java专用的库,但现在它是一个众所周知的 API,分布在各种编程语言上。它是一个开源项目,最近切换到 SourceForge 项目基础架构,可以更轻松地跟踪高容量 XML 开发列表之外的开放 SAX 问题。截至 2018 年 1 月 10 日的当前最新版本是 SAX 2.0。它使用事件驱动的串行访问机制来访问 XML 文档,并且经常被需要访问 XML 文档的小程序使用,因为它是可用于解析 XML 文档的最快且内存消耗最少的 API。 SAX 使用的机制使其独立于之前出现的元素,即它与状态无关。

DOM 代表文档对象模型。 DOM API 提供了读取和写入 XML 文件的类。 DOM 读取整个文档。它在读取中小型 XML 文件时很有用。它是一个基于树的解析器,与 SAX 相比有点慢,并且在加载到内存时占用更多空间。我们可以使用 DOM API 插入和删除节点。

现在,为使用 XML 文档的客户端提供链接应用程序的包称为 XML 解析器。计划读取 XML 文档。创建了一个 XML 解析器,用于执行使用 XML 的程序。

SAX 解析器

SAX 代表 XML 的简单 API,SAX API 由 SAX 解析器实现。这个 API 被称为基于事件的 API,它提供了处理程序的接口。有四个处理程序接口。 ContentHandler、DTDHandler、EntityResolver 和 ErrorHandler 接口。它不创建任何内部结构,而是将输入文档的组件的出现作为事件,然后在读取输入文档时告诉客户端它读取的内容。它适用于大型 XML 文件,因为它不需要加载整个 XML 文件。

SAX 解析器的特点

  • SAX 解析器无法创建内部结构。
  • 这些基于事件的 SAX 解析器的工作方式与Java的事件处理程序相同。

SAX 解析器的优势

  • 使用非常简单,内存效率高。
  • 它的运行时间太快,可以用于更大的文档或文件系统。

SAX 解析器的缺点

  • 它对 API 的理解能力远不如基于事件的 API。
  • 由于数据太多,我们无法知道完整信息。

DOM解析器

DOM 代表文档对象模型。当一个对象包含一些关于 XML 文档的信息时,称为 DOM Parser。这看起来像一个树状结构。 DOM API 是由一个 DOM API 实现的,非常容易使用。它将 XML 文档表示为树格式,其中每个元素表示树枝并创建 XML 文件的内存中树表示,然后解析它需要更多内存。

DOM解析器的特点

  • 内部结构可以由 DOM Parser 创建。
  • 由于这些内部结构客户端可以获得有关原始 XML 文档的信息。

DOM 解析器的优点

  • DOM API 易于使用,因此我们可以进行写入和读取操作。
  • 当需要文档时,它更喜欢可以随机访问的宽广部分。

DOM 解析器的缺点

  • 它的内存效率不是很好,它需要更多的内存,因为需要在那里加载 XML 文档。
  • 与 SAX 解析器相比,它太慢了。

因此, JavaSAX 解析器和 DOM 解析器之间的决定性差异如下

S.NO.

SAX PARSER

DOM PARSER

01. It is called a Simple API for XML Parsing. It is called as Document Object Model.
02. It’s an event-based parser. It stays in a tree structure. 
03. SAX Parser is slower than DOM Parser. DOM Parser is faster than SAX Parser. 
04. Best for the smaller sizes of files. Best for the larger size of files.
05. It is suitable for making XML files in Java. It is not good at making XML files in low memory.
06. The internal structure can not be created by SAX Parser. The internal structure can be created by DOM Parser.
07. It is read-only. It can insert or delete nodes.
08. In the SAX parser backward navigation is not possible. In DOM parser backward and forward search is possible
09. Suitable for efficient memory. Suitable for large XML document.
10. A small part of the XML file is only loaded in memory. It loads whole XML documents in memory.