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

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

       

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

有没有办法做到这一点,实现某种转换器? 可以使用XmlJavaTypeAdapter吗?

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

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

查看JAXB教程的[覆盖数据类型] [1]部分。 您可以使用类似于页面底部示例的自定义绑定文件设置来完成此操作。

我认为你不得不编写自己的转换方法(因此类),因为似乎没有一个内置的(可能是因为JAXB生成的枚举没有共同的超类)。 但是你需要做的只是在你的enum对象上调用value()方法,它将返回映射到它的String。

[1]: https : //jaxb.dev.java.net/tutorial/section_5_6_1-Overriding-the-Datatype.html#Overriding the Datatype

jaxb:globalBindings typesafeEnumBase =“xs:boolean”将起作用 – 将其留空,因为建议对绑定模式无效。