【发布时间】:2011-11-02 16:33:58
【问题描述】:
我有几个巨大的 XML 模式定义 (XSD) 文件,我只想为已定义类型的子集生成相应的 Java 类。
更准确地说,我有一个“根”类型列表,我想将它们转换为 Java 类,包括这些根类型所需的所有类型。
是否可以在 JAXB 绑定文件中定义一些“根”类型并告诉 JAXB 仅将它们及其所有依赖类型转换为 Java 类并忽略所有其他不必要的类型?
提前致谢。
【问题讨论】:
我有几个巨大的 XML 模式定义 (XSD) 文件,我只想为已定义类型的子集生成相应的 Java 类。
更准确地说,我有一个“根”类型列表,我想将它们转换为 Java 类,包括这些根类型所需的所有类型。
是否可以在 JAXB 绑定文件中定义一些“根”类型并告诉 JAXB 仅将它们及其所有依赖类型转换为 Java 类并忽略所有其他不必要的类型?
提前致谢。
【问题讨论】:
可能有一种更直接的方法,但一种方法是制作 XSD 的副本并从副本中删除所有 XML 类型,但您想要的根类型及其依赖项除外。然后将 xjc 应用于副本而不是原始副本。
您可以使用 XSLT 自动化此过程并构建自动化工具,如 Maven、Gradle、Ant 等。您首先编写 XSLT 样式表,将 XSD 转换为仅复制具有依赖关系的根类型,并将结果保存到临时位置(例如,带有 Maven 的 target/generated-sources 文件夹)。然后,以 Maven 为例,您可以使用 pom.xml 中的构建插件自动化该过程:
【讨论】: