从 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 命令行难以获得的内容。