问. 什么是 Java Architecture for XML Binding( JAXB )?
答. Java Architecture for XML Binding( JAXB )简化了启用 XML 的 Java 程序的创建和维护。 JAXB 提供一个绑定的编译器和一个运行时框架用来支持 XML 和 Java 对象的双向映射。绑定编译器可将 W3C XML 样式转换成一个或多个 Java 类,这个过程无需开发人员编写复杂的解析代码。模式派生类以及绑定框架可对输入和输出的 XML 文档启用错误或有效性检查,因而可以确保系统接收、处理和生成有效而无误的消息。更多信息,请参阅 Reference Implementation 和 Public Draft Specification,以上文档均可在 JAXB 主页下载。
问. JAXB、SAX 和 DOM 有什么不同?我应当选用哪一个?
答. SAX 是一种事件驱动的 XML 解析器,适用于高速处理 XML ,因为它不在内存中生成数据表示。与之不同,DOM 在内存中生成数据表示,允许应用程序对内存中的内容进行操纵。 SAX 和 DOM 都自动执行结构的有效性验证。一个应用程序可以使用 SAX 和 DOM 进行内容有效性验证,但这样的应用程序必须提供额外的代码,这可能会是复杂的、易于出错和难以维护的。
一个 JAXB 应用程序可以使用由模式生成的 Java 类对结构和内容进行有效性验证。与 DOM 类似,一个 JAXB 应用程序在内存中通过编组(marshalling) XML 文档来构造内容树,从而创建数据结构,这个树包括派生类的实例对象。但与 DOM 树不同,内容树是特定于某一种源模式的,不包含额外的树操纵功能,不允许使用其派生类的访问器方法对数据进行访问,也不能动态地构建。如果文档的内容是趋于动态且没有完好约束的,则在处理内容之前,在处理那些没有知名样式的 XML 内容方面,DOM 和 SAX 要比 JAXB 更适合。
问. JAXB 如何工作?
答. 要构建 JAXB 应用程序,首先从 XML 模式开始。beta 版本要求模式语言是 XML Schema 的 W3C 2001 Recommendation。
在获得 XML 模式之后,就可以构建和使用 JAXB 应用程序,按以下这些步骤:
1.
将 XML Schema 提交给绑定的编译器,生成 Java 源文件。
您可以定制绑定声明,从而覆盖 XML Schema 组件与 Java 表示之间的默认绑定。
2.编译 Java 源代码。
3.
使用类和绑定框架,编写 Java 应用程序,如下:
构建表示 XML 数据的对象树,该数据按 XML Schema 是有效的,可以通过从文档中解组(unmarshalling)数据或实例化要创建的类。
访问和修改数据。
可以选择对与约束相关的数据的更改进行验证,这些约束在 XML Schema 中表示。
将数据整理为新的 XML 文档。
问. 谁参与开发 JAXB ?
答. JAXB 由 Java Community Process(JCP )正在进行开发,JCP 由专家组所组成,包括 IBM、Software AG、BEA Systems、Hewlett-Packard、 TIBCO Software Inc.、 Oracle、 Fujitsu Limited、Breeze Factor LLC、Macromedia Inc. 和 Intalio Inc.。Sun 是 W3C XML Schema Working Group 最积极的成员,并与其他业界团体共同工作,如 OASIS 和 xml.org 。
问. 我从哪里能够阅读到关于 JAXB 的更多内容?
答. 对于 JAXB 更高层的解释,请参阅 Java Web Services Tutorial 中的 JAXB 一章。还需提醒的是,详细用户指南也作为 JAXB 的一个部分发布。更多关于 JAXB 的技术和细节描述,请参看最新版本的规范,您可以从 JAXB 主页 下载。请注意,此规范使用 Adobe Acrobat PDF 格式。