從 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 用於建立中生成的類(ES)的例項。在某些情況下,這似乎是一個微不足道的包裝

new Person();

但在更復雜的情況下,它會建立適當的包裝在你的情況下,提供了缺失的一環,以正確馬歇爾解組的物件和 XML。

package-info.java 包含一般 XSD 資訊。

所有其他檔案都是從 XSD 中描述的模型派生的類。這裡我們只有 **Person.java,**因為我們的模型中只有一個物件。

使用其他命令列引數 Jaxb 和 XJC 將為你提供生成程式碼的強大功能。XJC 還提供了使用或建立外掛去 beyoond 的方法,並執行以下操作:

  • 讓生成的程式碼實現介面或擴充套件類。
  • 與類自動生成 toString,hashcode,equals 等。
  • 自動對映 xml 型別(簡單或複雜)和 JavaType。
  • 在生成的程式碼中注入自定義程式碼或註釋。

還有更多

你還可以使用其他工具與 xjc 進行互動,Maven 外掛(我知道至少 4 個),Ant 任務等。通常這些工具可以執行僅使用 Reference 實現 thorugh 命令列難以獲得的內容。