什么是 JAXB,我为什么要使用它?[已关闭]

2022-08-31 09:29:20

这里有人发誓JAXB是自切片面包以来最伟大的东西。我很好奇Stack Overflow用户认为JAXB的用例是什么,以及是什么使它成为这种情况的好或坏的解决方案。


答案 1

我是 JAXB 的忠实粉丝,用于操作 XML。基本上,它提供了这个问题的解决方案(我假设熟悉XML,Java数据结构和XML模式):

使用 XML 非常困难。人们需要一种方法来获取XML文件(基本上是一个文本文件),并将其转换为某种数据结构,然后程序可以对其进行操作。

JAXB 将采用您编写的 XML 模式,并创建一组与该模式对应的类。JAXB 实用程序将创建用于操作该 XML 的数据结构层次结构。

然后,可以使用 JAXB 读取 XML 文件,然后创建生成的类的实例 - 其中装满了 XML 中的数据。JAXB也反其道而行之:获取java类,并生成相应的XML。

我喜欢JAXB,因为它易于使用,并且带有Java 1.6(如果您使用的是1.5,则可以下载JAXB .jars)。它创建类层次结构的方式是直观的,根据我的经验,它很好地抽象出“XML”,以便我可以专注于“数据”。

因此,为了回答您的问题:我预计,对于小型XML文件,JAXB可能有些过分。它要求您创建和维护 XML 模式,并使用“标准教科书方法”将 Java 类用于数据结构。(主类,表示“节点”的小内部类,以及它们的巨大层次结构。因此,JAXB 对于应用程序的简单线性“首选项”列表来说可能不是很好。

但是,如果你有一个相当复杂的XML模式,并且其中包含大量数据,那么JAXB就太棒了。在我的项目中,我在二进制(由C程序使用)和XML(以便人们可以使用和修改该数据)之间转换大量数据。生成的 XML 模式是非平凡的(层次结构的许多级别,某些字段可以重复,而其他字段则不能),因此 JAXB 有助于操作它。


答案 2

这是不使用它的一个原因:性能会受到影响。在封送和取消封送时,有大量的开销。您可能还需要考虑另一个用于 XML 对象绑定的 API,例如 JiBX:http://jibx.sourceforge.net/


推荐