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

Jaxb Generates Objects for Unused Elements from Imported Schema

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

当我从模式生成 java 对象时,我得到了我的模式类型,以及我按预期引用的元素,但是我也得到了为 30+ other 来自通用模式的类型。

我想使用通用架构,因为我想在通用架构更改时依靠自动构建来更新我的架构,但我不希望生成额外的 java 类。

建议 ?

没有开箱即用的方法来实现您想要的。我在这里提出意见的原因是(也许是为了其他人)指出一些无论走哪条路都需要考虑的问题。

'extra' 标签并不总是直截了当的。替换组成员很有趣。在 Java 中,考虑使用接口 (I) 的 class (A) 和实现 (I) 的 class (B:I)。有些人可能会说 A 和 B 之间没有依赖关系,而其他人可能会在分发中需要 B。如果将 (I) 替换为具体的 class,事情会变得更加不清晰——考虑到替换组头不需要是抽象的;或者如果替换组头的类型是任何类型(Java 中的对象)。

更重要的是,如果 XML 处理被设计为适应 xsi:type 那么就更难判断(通过查看模式)什么预计会在哪里工作。

QTAssistant(我与它相关联)等工具具有默认设置,该设置将引入所有严格的依赖项(上面的 A 和 I);以及所有可能有效的方法(上面的 B),或者没有别的。介于两者之间的任何内容,用户都需要手动定义发布中的内容。这称为自动 XSD 重构,可以在您的方案中轻松使用。