java - Jaxb 将带有抽象超类的枚举解组到 Java - 未生成枚举值
问题描述
我有一个必须遵循的 web 服务标准,有一个 xsd 并想要生成 Java 类。一些带有枚举的类是正确生成的,但有些是空的并且没有值。
比如这个
<xsd:simpleType name="ST_Month">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="01">
<xsd:annotation>
<xsd:documentation xml:lang="de">January</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="02">
<xsd:annotation>
<xsd:documentation xml:lang="de">February</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
...
</xsd:restriction>
</xsd:simpleType>
正确生成到
@XmlType(name = "ST_Month")
@XmlEnum
public enum STMonth {
/**January */
@XmlEnumValue("01")
VALUE_1("01"),
/** February */
@XmlEnumValue("02")
VALUE_2("02"),
...
}
但是一些枚举有这样的抽象超类:
<xsd:complexType name="STE_Country" abstract="true">
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="STE_CountryBasic" final="#all">
<xsd:simpleContent>
<xsd:restriction base="dt:STE_Country">
<xsd:enumeration value="01">
<xsd:annotation>
<xsd:documentation>USA</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="02">
<xsd:annotation>
<xsd:documentation>GERMANY</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
生成的结果是这样的:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "STE_CountryBasic")
public class STECountryBasic extends STECountry
{
}
我还为“MyOwnCountry”添加了自己的 complexType,其中包含 STE_Country 中缺少但在我的应用程序中需要的国家/地区值。但生成的类与 STECountryBasic 是相同的空结果。
我该怎么做才能生成 STECountryBasic 中的枚举值?
此外,我正在使用 cxf-codegen-plugin 通过 maven 生成
解决方案
推荐阅读
- rally - App-debug.html 在 eu1.rallydev.com 上不起作用
- django - 反应 django 渲染相同的内容
- python-3.x - 将 putty 终端与 tkinter 一起嵌入
- android - 根据 id 从 Firebase 获取单个值
- java - 在 Hibernate 中加密特定列:如何处理现有数据以及如何正确实现 @ColumnTransformer?
- c# - 过程间污点分析
- mysql - MySQL 查询以选择仅选择一个类别的用户
- python - Python:将字典转换为字节
- php - 即使在链接之后 SQL 也不会更新(使用 PHP)
- ssl - 如何配置在 erlang OTP 21.3 上运行的 rabbitmq3.7.11 以使用 ssl 连接 python 2.7.5 应用程序客户端