使用 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 数据。


除了从命令行使用 xjc 工具外,还可以从 Ant 构建环境中调用此 JAXB 工具。从 Ant 构建环境中使用 com.sun.tools.xjc.XJCTask Ant 任务来调用 xjc 模式编译器工具。为了正常运行,此 Ant 任务需要您使用 ws_ant 脚本来调用 Ant。

过程
- 使用 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 命令的更多信息。