【问题标题】:When and why would you use Apache commons-digester?您何时以及为什么会使用 Apache commons-digester?
【发布时间】:2010-10-05 23:58:19
【问题描述】:

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

【问题讨论】:

    标签: java apache-commons-digester


    【解决方案1】:

    来自digester wiki

    为什么要使用 Digester?

    Digester 是 SAX 之上的一层 xml解析器API,使其更容易 处理xml输入。特别是, 消化器使其易于创建和 初始化基于对象的树 一个 xml 输入文件。

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

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

    与生成的工具不同 类,你可以写你的 首先是应用程序的类,然后是 后来决定用 Digester 构建 它们来自 xml 输入文件。这 结果是你的课程是真实的 具有真实行为的类,即 碰巧是从 xml 初始化的 文件,而不是简单的“结构” 只保存数据。

    作为不用于什么的示例:

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

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

    【讨论】:

      【解决方案2】:

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

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

      EDIT 2019:另外,Jackson XML,在方法上类似于 JAXB,但使用 Jackson 注释

      【讨论】:

      【解决方案3】:

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

      此外,使用 XPath 或使用 Java/XML 绑定工具(如 Castor)读取 XML 并自行处理是不错的选择,而且可能是更标准的选择。

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

      【讨论】:

      • “如果您想从 XML 创建和初始化“真正的”对象,请使用一个像样的 bean 容器,例如 Spring 提供的容器。”这。完全是这样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多