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