使用 JAXB xjc 工具根据 XML 模式文件生成 JAXB 类
使用 Java XML 绑定体系结构 (JAXB) xjc 工具将 XML 模式文件编译为完全注释的 Java 类。
准备工作
有关此任务
可以使用 JAXB API 和工具在 XML 模式和 Java 类之间建立映射。 XML 模式描述 XML 文档中的数据元素和关系。 在数据映射或绑定存在后,可以在 XML 文档与 Java 对象之间进行转换。 现在不必理解数据结构即可访问 XML 文档中存储的数据。
要从现有的 web 服务描述语言 (WSDL) 文件着手使用自顶向下式开发方法来开发 Web Service,请在从 WSDL 文件着手时使用 wsimport 工具为 Java API for XML-Based Web Services (JAX-WS) 应用程序生成工件。 为应用程序生成 Java 工件后,可以通过使用 JAXB 模式编译器 xjc 命令行工具根据 XML 模式文件生成完全注释的 Java 类。 生成的带注释 Java 类包含 JAXB 运行时解析 XML 以进行编组和取消编组所需的所有必需信息。 可以在 Java API for XML Web Services (JAX-WS) 应用程序或其他 Java 应用程序中使用生成的 JAXB 类以处理 XML 数据。
最佳实践: WebSphere® Application Server 提供 Java™ API for XML-Based Web Services (JAX-WS) 和 Java XML 绑定体系结构 (JAXB) 工具。 wsimport, wsgen, schemagen 和 xjc 命令行工具位于 WebSphere Application Server Traditional中的 app_server_root\bin\ 目录中。 xjc 和 schemagen 命令位于 Liberty 概要文件中的 app_server_root\jaxb\bin\ 目录中。 在某些情况下,由 WebSphere Application Server 和 JDK 提供的工具生成的工件支持相同的规范级别。 总之,JDK 工具生成的工件可在其他顺应的运行时环境之间移植。 但是,最佳实践是使用本产品随附的工具在 WebSphere Application Server 环境中实现无缝集成,并利用仅在 WebSphere Application Server中受支持的功能部件。 要利用 JAX-WS 和 JAXB V2.2 工具,请使用应用程序服务器附带提供的工具,这些工具位于 app_server_root\bin\ 目录。
支持的配置: 此产品支持 JAXB 2.2 规范。 JAX-WS 2.2 要求使用 JAXB 2.2 进行数据绑定。
除了从命令行使用 xjc 工具外,还可以从 Ant 构建环境中调用此 JAXB 工具。 从 Ant 构建环境中使用 com.sun.tools.xjc.XJCTask Ant 任务来调用 xjc 模式编译器工具。 为了使功能正常,此 Ant 任务需要您使用 ws_ant 脚本来调用 Ant。
避免麻烦: 如果您正在使用 xjc Ant 任务,那么必须使用
destdir 参数来指定目标目录,而不是 target 选项。 使用 xjc Ant 任务时指定 target 选项会导致错误。过程
- 使用 JAXB 模式编译器 xjc 命令生成 JAXB 注释的 Java 类。模式编译器位于 app_server_root\bin\ 目录中。 模式编译器根据编译时使用的绑定选项生成一组包含 Java 源文件和 JAXB 属性文件的包。
- (可选)使用定制绑定声明来更改缺省 JAXB 映射。 在 XML 模式文件或单独绑定文件中定义绑定声明。 可通过将
-b选项与 xjc 命令配合使用来传递定制绑定文件。 - 编译生成的 JAXB 对象。要编译生成的工件,请将 Thin Client for JAX-WS with WebSphere Application Server 添加到类路径。
结果
示例
以下示例说明从现有 XML 模式文件着手时 JAXB 工具如何生成 Java 类。
- 将以下
bookSchema.xsd模式文件复制到临时目录。<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="CatalogData"> <xsd:complexType > <xsd:sequence> <xsd:element name="books" type="bookdata" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="bookdata"> <xsd:sequence> <xsd:element name="author" type="xsd:string"/> <xsd:element name="title" type="xsd:string"/> <xsd:element name="genre" type="xsd:string"/> <xsd:element name="price" type="xsd:float"/> <xsd:element name="publish_date" type="xsd:dateTime"/> <xsd:element name="description" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:string"/> </xsd:complexType> </xsd:schema> - 打开命令提示符。
- 从模式文件所在的目录中运行 JAXB 模式编译器 xjc 命令。 xjc 模式编译器工具位于 app_server_root\bin\ 目录中。
运行 xjc 命令将生成下列 JAXB Java 文件:
generated\Bookdata.java generated\CatalogdData.java generated\ObjectFactory.java - 在 Java 应用程序中使用生成的 JAXB 对象通过生成的 JAXB 类来控制 XML 内容。
请参阅 JAXB 引用实现文档以获取有关 xjc 命令的更多信息。