gpt4 book ai didi

java - 使用哪个 Java XML 解析器?

转载 作者:行者123 更新时间:2023-12-01 19:03:55 25 4
gpt4 key购买 nike

我从这个link找到Java 中有多种类型的 XML 解析器。你能帮我选择哪一个会消耗更少的内存并且运行得更快吗:

DOM XML Parser
SAX XML Parser
JDOM XML Parser
JAXB

我想创建带有 C 客户端的 Java 服务器应用程序,该应用程序使用 XML 通过网络进行通信。如果我选择使用 JAXB,我可以轻松地将其与 libxml 集成吗? ?如果我使用JAXB和libxml可能会出现哪些问题在应用程序之间传输数据?

最佳答案

这些更多的是解析技术,而不是实际的解析工具。 Xerces 是解析工具的一个示例。

SAX 有利于速度和解析事件处理。从事件中解析可以轻松地让您跳过不感兴趣的事件,并且跳过的惩罚很低。当整个文档被读取时,不需要存储它,因此SAX可以处理大于系统内存的文档。

DOM 适合将整个文档保存在内存中。这样做可以轻松地让您完成需要文档所有元素(交叉引用等)的工作。这种便利是有代价的,与 SAX 不同,您必须有足够的内存来保存整个文档。

JDOM 基本上是 DOM,但具有不同的编程接口(interface)。它假设它的编程接口(interface)更符合 Java,无论这意味着什么。

JAXP 是一套 XML 处理工具,它以可插拔的方式包含 SAX 和 DOM 接口(interface),可以轻松地替换后端实现。

JAXB 是一套 XML 处理工具,可以方便地将 XML 映射到常规 Java 对象,并从常规 Java 对象生成 XML。

就我个人而言,我喜欢 SAX,但是为了使用 SAX 进行高效解析,您应该使用堆栈和上下文相关的解析器 block ,这些解析器 block 被插入堆栈并从堆栈中弹出,从而生成 XML 映射到的对象。这个想法是,您将文档中的位置保持为 StringBuffer,然后插入一个处理程序来处理进入的元素,然后处理所有事件,直到检测到正确的退出事件。然后上面的处理程序从弹出的子处理程序中读取对象。像这样的技术需要一些工作,但可以将 SAX 的速度与 DOM 的便利结合起来,生成您自己的对象树(而不是“节点”树)。

关于java - 使用哪个 Java XML 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com