xsd - Jaxb 从导入的架构中为未使用的元素生成对象

标签 xsd jaxb xjc jaxb2-maven-plugin

我有几个模式,它们从一组“通用”模式继承一个或多个元素。在这个特定的实例中,我导入这些模式之一以利用其中定义的单个复杂类型。

当我从模式生成 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/

相关文章:

java - jaxb:xsd 到 java,可以具有其他两个元素之一的父元素

json - JSON 和 YAML 是否有相当于 DTD 或 XML 架构的工具?

xsd - 任何方式来覆盖 <choice> 元素如何被 xsd.exe 绑定(bind)

Java - 具有可选字段的 JAXB XML 解码

java - 使用 JAXB 的 Jersey Web 服务中的 xml 语法无效

xml - 从模式生成代码时删除中间类

java - 为 JAXB 中生成的每个类生成唯一的可序列化 ID

java - 基于给定 XSD 文件将 Java 对象转换为 XML 时出现问题

xml - 在 jaxb 编码中动态设置对象的命名空间

web-services - 请帮助: xjc throws "Two declarations cause a collision in the ObjectFactory class"