JAXB - 从XSD生成类 - 将枚举转换为字符串

nic*_*laj 4 java jaxb

使用JAXB,我们直接生成Java bean.在XSD中,我们有一个枚举类型:

  <xs:simpleType name="promptBeforeCloseType">
    <xs:restriction base="xs:string">
     <xs:enumeration value="default"/>
     <xs:enumeration value="always"/>
     <xs:enumeration value="never"/>
    </xs:restriction>
  </xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

JAXB使用此类型为字段生成枚举类型.我们希望将它转换为生成的Java类中的String,因为这些类映射到ActionScript类,并且ActionScript中没有枚举类型.

有没有办法实现它,实现某种转换器?可能与XmlJavaTypeAdapter一起

ska*_*man 7

您可以强制XJC不生成枚举.请参阅本文档的"全局绑定声明"部分:

如果typesafeEnumBase设置为xsd:string,那么它将是一种全局方式,用于指定直接或间接从xsd:string派生并具有枚举构面的所有简单类型定义应默认绑定到类型安全枚举.如果将typesafeEnumBase设置为空字符串"",则默认情况下,任何简单的类型定义都不会绑定到类型安全的枚举类.

  • 更新的doc位置:http://download.oracle.com/javaee/5/tutorial/doc/bnbbf.html#bnbcd (8认同)