JAXB和XmlBeans之间的差异

Anonim

JAXB与XmlBeans

JAXB是JavaEE标准的一部分,是指用于XML绑定的Java体系结构。正是这个过程用于处理XML文档。使用JAXB是首选,因为它提供了在Java中处理XML文档的替代方法,而无需了解XML技术的所有小细节。 JAXB作为开源软件包在JavaEE 5兼容应用程序中可用。该软件包允许数据绑定,易于阅读和访问用Java编程语言编写的XML文档。另一方面,XMLBeans是由BEA系统开发的开源项目,它们提供与JAXB类似的功能,允许访问XML文档。但是,在处理XMLBeans时,需要具备良好的XML背景知识。但是,两者之间存在差异,下面将对它们进行讨论。

差异

在开发JAXB和XMLBeans之前,处理XML的唯一方法是使用软件分析语言SAX(Simple API for XML)或使用DOM(文档对象模型),这两种语言都是由分析语言提供的。 JAXP(用于API处理的Java API)。开发人员必须创建旨在通过JAXP调用DOM或SAX的代码,以便代码可以分析XML文档中的语言。在扫描时,代码通常将代码分解为不同的部分,以便可以使目标应用程序可用。

JAXB和XMLBeans之间的主要区别在于每种方法都采用编组和XML文档的解组。 XMLBeans处理整个XML文档而不进行Java转换,因为XML文档的数据完整性已被证明丢失。 XMLBeans创建了一个用于扫描XML文档的游标。使用游标,可以访问文档的任何元素,包括架构信息或注释,因为文档的保真度得以保持。 XMLBeans还提供在同一文档中执行XQuery。 XMLBeans提供了进一步的类型访问,它具有相当通用的访问类型,它成为API的反映。如前所述,XMLBeans需要丰富的XML知识,并且通过扩展,需要SAX甚至DOM。

另一方面,JAXB与XML模式绑定在一起。这是因为第一个JAXB版本出现的问题,因为它无法支持只能支持DTD(文档类型定义)的所有XML架构功能。实际上,这意味着JAXB的第一个版本无法提供可读的绑定。 JAXB 2.0使开发处理变得非常简单,因为它提供了完整的XML模式支持,Java到XML模式映射,可移植性和模式演变。此外,JAXB引入了无效的XML内容的灵活解组,并且尚未决定是否终止解组。

摘要:

- 如果您更喜欢更强大的XML功能,XMLBeans会更好XQueries和直接XML文档访问。它的使用是以牺牲内存管理和性能为代价的。

- 如果您需要更高的性能和内存管理,JAXB是首选,尽管它不像XMLBeans那样彻底。

- 如果您正在进行简单的XML文档转换,则应该选择JAXB。

- 绑定自定义在JAXB中最好,而不是XMLBeans。

- 与使用XMLBeans相反,JAXB提供了高效的内存使用,而XMLBeans是一个依赖于内存的进程。

- 如果您希望解组XML文档,那么JAXB是您的选择,因为XMLBeans在解组时面临困难。在绑定模式时,您可以使用ObjectFactory进行对象创建,并在生成内容时使用set方法。