12

在使用 java 输入和输出 xml 的所有库中,在哪些情况下 commons-digester 是首选工具?

4

3 回答 3

11

来自消化器维基

为什么要使用消化器?

Digester 是 SAX xml 解析器 API 之上的一个层,可以更轻松地处理 xml 输入。特别是,digester 使得基于 xml 输入文件创建和初始化对象树变得容易。

Digester 最常见的用途是处理 xml 格式的配置文件,根据该信息构建对象树。

请注意,digester 可以创建和初始化真实对象,即与应用程序的业务目标相关并具有真实行为的事物。许多其他工具有不同的目标:在输入 XML 文档中构建数据模型,就像 W3C DOM 所做的那样,但更友好一些。

与生成类的工具不同,您可以先编写应用程序的类,然后再决定使用 Digester 从 xml 输入文件构建它们。结果是您的类是具有真实行为的真实类,恰好是从 xml 文件初始化的,而不是仅保存数据的简单“结构”。

作为它不用于的示例:

但是,如果您正在寻找输入 xml 文档的直接表示,作为数据而不是真实对象,那么 digester 不适合您;DOM、jDOM 或其他更直接的绑定工具会更合适。

因此,digester 会将 XML 直接映射到 java 对象中。在某些情况下,这比通读树并提取选项更有用。

于 2009-02-06T19:13:50.777 回答
7

我的第一个想法是“从不”……但也许它有它的位置。我同意 eljenso 的观点,即它已被竞争超越。

因此,对于高效且简单的对象绑定/映射,JAXB或XStream更好。更方便,甚至更快。

编辑 2019:还有,Jackson XML,在方法上类似于 JAXB,但使用 Jackson 注释

于 2009-04-09T06:21:57.737 回答
2

如果您想从 XML 创建和初始化“真正的”对象,请使用一个像样的 bean 容器,例如 Spring 提供的容器。

此外,使用 XPath 或使用 Java/XML 绑定工具(如 Castor)读取 XML 并自行处理它是很好的并且可能是更标准的替代方案。

在使用 Struts 时,我曾使用过 Digester,但它的可能用途似乎已被其他工具和框架超越。

于 2009-02-06T19:20:37.020 回答