我使用JAXB 2.1从几个我无法修改的XSD文件生成Java类(实际上来自WSDL文件),并且我遇到了与复杂类型限制相关的问题。
在限制上修改从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
字段?
在我看来,这是一个更好的一代,因为它尊重约束。
有什么想法,关于这个话题?
谢谢!
答案 0 :(得分:0)
如果不需要这种类型,那么单独 minOccurs =“0”应该足够,不是吗?看起来你正在尝试定义一个可能没有包含在文档中的元素 - 这没有意义,尽管它是有效的。
答案 1 :(得分:0)
好的我明白了。
这基本上是<xjc:treatRestrictionLikeNewType />
自定义和<xjc:simple />
之间的互动问题。如果我删除简单的字段,则不再生成字段!
当你走在JAXB的实验路径上时会发生这种情况;)