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指南”