在用java输入和输出xml的所有库中,在哪种情况下,commons-digester是首选工具?
答案 0 :(得分:10)
为什么要使用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合作,但似乎它已被其他工具和框架所超越,以用于它可能的用途。