Jaxb从导入的模式为未使用的元素生成对象

时间:2015-02-10 17:30:58

标签: xsd jaxb xjc jaxb2-maven-plugin

我有几个模式继承了一个' common'的集合中的一个或多个元素。模式。在这个特定的例子中,我导入其中一个模式以使用其中定义的单个复杂类型。

当我从模式生成java对象时,我得到了我的模式类型,以及我按预期引用的元素,但是我也从公共模式中获取了30多个其他类型的对象。

我想使用公共模式,因为我希望在公共模式更改时依赖自动构建来更新我的模式,但我不希望生成额外的java类。

建议?

1 个答案:

答案 0 :(得分:1)

没有开箱即用的方法来达到你想要的效果。我在这里提出意见的原因是要指出(可能是其他人)无论哪条路线都需要考虑的问题。

'额外'标签并不总是直截了当的。替补组成员很有意思。在Java中,考虑使用接口(I)的类(A)和实现(I)的类(B:I)。有人可能会说A和B之间没有依赖关系,而其他人则需要分配B。如果用一个具体的类替换(I),事情变得更加清晰 - 考虑到替换组组头并不需要是抽象的;或者如果替换组头的类型是anyType(Java中的Object)。

更重要的是,如果XML处理的目的是为了容纳xsi:type,那么通过查看架构甚至更难以说明在哪里工作。

QTAssistant之类的工具(我与它相关联)有一个默认设置,它将引入所有严格的依赖关系(上面的A和I);以及可能有效的所有(上面的B)或其他任何东西。介于两者之间,用户需要手动定义发布中的内容。这称为自动XSD重构,可以在您的场景中轻松使用。