jaxbjaxb入门


备注

本节概述了jaxb是什么,以及开发人员可能想要使用它的原因。

它还应该提到jaxb中的任何大型主题,并链接到相关主题。由于jaxb的文档是新的,您可能需要创建这些相关主题的初始版本。

从XSD生成代码

JAXB可用于从XSD中定义的模型生成类。然后,可以直接将针对此XSD的XML文档作为java实例读取,并将这些实例反向保存为XML文档。

将以下XSD保存在名为SimpleModel.xsd的文件中

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://myCorp/schemas/simpleModel"
 xmlns:simple="http://myCorp/schemas/simpleModel"
 elementFormDefault="qualified"
 attributeFormDefault="unqualified">
 
 <complexType name="Person">
     <sequence>
         <element name="FirstName" type="string"/>
         <element name="LastName" type="string"/>
         <element name="DateOfBirth" type="dateTime"/>
     </sequence>
 </complexType>
 
</schema>
 

您可以使用JAXB自动生成类以使用此命令行匹配此XSD(前提是您的JDK的bin文件夹位于您的路径上)

xjc SimpleModel.xsd
 

这将生成一个基于XSD名称空间(此处为mycorp.schemas.simplemodel)的包,其中包含以下类:

  • ObjectFactory.java
  • package-info.java
  • Person.java

ObjectFactory用于创建生成的类的实例。在某些情况下,这似乎是一个微不足道的包装

new Person();
 

但是在更复杂的情况下,它将在您的实例周围创建正确的包装器 ,从而提供缺少的链接以正确地对对象进行编组 和解组

package-info.java一般包含有关XSD的信息。

所有其他文件都是从XSD中描述的模型派生的类。这里我们只有Person.java,因为我们的模型中只有一个对象。

使用其他命令行参数 Jaxb和XJC将为您提供生成代码的强大功能。 XJC还提供了使用或创建插件去beyoond的方法,并执行以下操作:

  • 让生成的代码实现接口或扩展类。
  • 与类自动生成toString,hashcode,equals等。
  • 自动映射xml类型(简单或复杂)和JavaType。
  • 在生成的代码中注入自定义代码或注释。

还有更多

您还可以使用其他工具与xjc进行交互,Maven插件(我知道至少4个),Ant任务等。通常这些工具可以执行仅使用Reference实现thorugh命令行难以获得的内容。

安装或设置

自JDK 6更新3以来,JAXB参考实现(JAXB-RI)已包含在Java Development Kit中。

有关JDK特定版本包含哪些JAXB-RI版本的更多详细信息,请参阅“ 非官方JAXB指南”