從 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 命令列難以獲得的內容。