gpt4 book ai didi

java - JAXB 代码生成 : restricted type -> how to remove a zero occurrence field?

转载 作者:行者123 更新时间:2023-12-03 23:15:09 25 4
gpt4 key购买 nike

我使用 JAXB 2.1 从几个我无法修改的 XSD 文件(实际上来自 WSDL 文件)生成 Java 类,并且我有一个与复杂类型限制相关的问题。On of the restrictions modifies the occurence configuration from 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")<br/>
protected List<CR> qualifiers;

在 B 生成的类中我有:


protected CR qualifiers;

由于我对 JAXB 的了解不足,因此缺少 XmlElement注释告诉 JAXB 不要编码/取消编码该字段。我错了吗?如果我是对的,有没有办法告诉 JAXB 不要生成 qualifiers领域吗?在我看来,这将是更好的一代,因为它尊重约束。

关于这个话题有什么想法吗?

谢谢!!

最佳答案

如果不需要类型,那么 minOccurs="0"就足够了,不是吗?看起来您正在尝试定义一个可能未包含在文档中的元素 - 这没有意义,尽管它是有效的。

关于java - JAXB 代码生成 : restricted type -> how to remove a zero occurrence field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com