【问题标题】:JAXB: generate Java classes only for a subset of the XSD typesJAXB:仅为 XSD 类型的子集生成 Java 类
【发布时间】:2011-11-02 16:33:58
【问题描述】:

我有几个巨大的 XML 模式定义 (XSD) 文件,我只想为已定义类型的子集生成相应的 Java 类。

更准确地说,我有一个“根”类型列表,我想将它们转换为 Java 类,包括这些根类型所需的所有类型。

是否可以在 JAXB 绑定文件中定义一些“根”类型并告诉 JAXB 仅将它们及其所有依赖类型转换为 Java 类并忽略所有其他不必要的类型?

提前致谢。

【问题讨论】:

    标签: java jaxb jaxb2


    【解决方案1】:

    可能有一种更直接的方法,但一种方法是制作 XSD 的副本并从副本中删除所有 XML 类型,但您想要的根类型及其依赖项除外。然后将 xjc 应用于副本而不是原始副本。

    您可以使用 XSLT 自动化此过程并构建自动化工具,如 Maven、Gradle、Ant 等。您首先编写 XSLT 样式表,将 XSD 转换为仅复制具有依赖关系的根类型,并将结果保存到临时位置(例如,带有 Maven 的 target/generated-sources 文件夹)。然后,以 Maven 为例,您可以使用 pom.xml 中的构建插件自动化该过程:

    1. 使用Maven XML plugin 运行XSLT 转换,最好使用Saxon as XSLT processor
    2. 运行 JAXB2 Maven plugin 以从新的 XSD 副本生成 Java 类(使用 schemaDirectory/schemaIncludes 参数)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      相关资源
      最近更新 更多