你何时以及为什么要使用Apache commons-digester?

时间:2009-02-06 17:40:47

标签: java apache-commons-digester

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

3 个答案:

答案 0 :(得分:10)

来自digester wiki

  

为什么要使用Digester?

     

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

     

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

     

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

  

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

作为不用于它的例子:

  

但是,如果您正在寻找输入xml文档的直接表示,则为   数据而不是真实的物体,然后消化器不适合你; DOM,jDOM或其​​他   直接绑定工具会更合适。

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

答案 1 :(得分:6)

我的第一次采取将是“从不”......但也许它有它的位置。我同意eljenso的说法,它已被竞争所超越。

因此,为了获得高效且简单的对象绑定/映射,JAXB要好得多,或XStream。更方便,更快。

编辑2019:同样,Jackson XML,类似于JAXB的方法,但使用杰克逊注释

答案 2 :(得分:2)

如果要从XML创建和初始化“true”对象,请使用类似于Spring提供的容器。

此外,阅读XML并使用XPath自行处理,或使用Castor等Java / XML绑定工具,这些都是很好的,也许是更标准的替代方案。

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