JAXB:仅为XSD类型的子集生成Java类

时间:2011-11-02 16:33:59

标签: java jaxb jaxb2

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

更确切地说,我有一个“root”类型列表,我希望将其转换为Java类,包括这些根类型所需的所有类型。

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

可能有一种更直接的方法,但是一种方法是制作XSD的副本,并从副本中删除所有XML类型,但所需的根类型及其相关性除外。然后在副本上应用xjc,而不是原始副本。

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

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