我使用 JAXB 2.1 从几个我无法修改的 XSD 文件(实际上来自 WSDL 文件)生成 Java 类,并且我遇到了与复杂类型限制相关的问题。On of the limits 将发生配置从 修改minOccurs="0" maxOccurs="unbounded"
为minOccurs="0" maxOccurs="0"
。因此,在受限类型中不再需要此字段。但实际上 JAXB 使用 [0..1] 基数而不是 0 生成受限类。
顺便说一句,生成是经过调整的,<xjc:treatRestrictionLikeNewType />
因此 XSD 限制不会映射到 Java 类继承。
这是一个例子:
这是在复杂类型 A 中定义字段的方式:
<element name="qualifier" type="CR" maxOccurs="unbounded" minOccurs="0"/>
这是限制 A 的另一个复杂类型 B 中限制相同字段的方式:
<element name="qualifier" type="CR" minOccurs="0" maxOccurs="0"/>
在生成的 A 类中,我有:
@XmlElement(name = "qualifier")
protected List<CR> qualifiers;
在 B 生成的类中,我有:
protected CR qualifiers;
由于我对 JAXB 的了解不足,XmlElement
注释的缺失告诉 JAXB 不要编组/解组该字段。我错了吗?如果我是对的,有没有办法告诉 JAXB 根本不生成该qualifiers
字段?在我看来,这将是更好的一代,因为它尊重约束。
任何想法,关于这个话题的想法?
谢谢!!