我有几个模式,它们从一组“通用”模式继承一个或多个元素。在这个特定的实例中,我导入这些模式之一以利用其中定义的单个复杂类型。
当我从模式生成 java 对象时,我得到了我的模式类型,以及我按预期引用的元素,但是我还从通用模式中获取了为 30 多种其他类型生成的对象。
我想使用通用模式,因为我想在通用模式更改时依靠自动构建来更新我的模式,但我不希望生成额外的 java 类。
建议?
最佳答案
没有现成的方法可以实现您想要的目标。我在这里提出意见的原因是想指出(也许是为其他人)一些无论走哪条路都需要考虑的问题。
“额外”标签并不总是那么简单。替补组成员很有趣。在 Java 中,考虑使用接口(interface) (I) 的类 (A) 和实现 (I) 的类 (B:I)。有些人可能会说 A 和 B 之间没有依赖关系,而其他人可能会要求分发中包含 B。如果将 (I) 替换为具体类,事情会变得更加不清楚 - 考虑到替换组头不需要是抽象的;或者如果替换组头的类型是anyType(Java 中的对象)。
更重要的是,如果 XML 处理被设计为适应 xsi:type那么(通过查看模式)就更难判断什么应该在哪里工作。
诸如QTAssistant之类的工具(我与它相关)有一个默认设置,它将引入所有严格的依赖关系(上面的 A 和 I);要么所有可能有效的方法(上面的 B),要么没有其他方法。介于两者之间的任何内容,用户都需要手动定义版本中的内容。这称为自动 XSD 重构,可以在您的场景中轻松使用。
关于xsd - Jaxb 从导入的架构中为未使用的元素生成对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28438061/