这是JAXB enumeration with numeric values的后续问题。更详尽的解释可以在http://blog.bdoughan.com/2011/08/jaxb-and-enums.html找到,它链接回该帖子。我将使用 Blaise 的博客文章作为起点。这非常有用,谢谢。
当我按照博客所示调用 xjc 并将 XSD 文件和绑定文件传递给它时,生成的类型与博客上显示的类型相同,即根据需要。好和好。
但是我的 Maven 构建并没有直接在我的 XSD 文件集上调用 xjc;它在我的 WSDL 文件上调用 wsdl2java,其中包括我的 XSD 文件。我可以通过 wsdl2java 调用(http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html,示例 7 )将 -b 参数传递给 xjc ,当我这样做时也就是说,枚举类型是根据绑定文件正确生成的,但使用它的字段——http://blog.bdoughan.com/2011/08/jaxb-and-enums.html 示例中的 Person.educationLevel --- 具有 String 类型,而不是应有的 EducationLevelType。
我还尝试使用内联自定义而不是外部绑定文件,即用 XSD 文件中的教育级别类型 simpleType 元素装饰
<annotation>
<appinfo>
<jxb:typesafeEnumClass>
<jxb:typesafeEnumMember value="1-6" name="ONE_TO_SIX"/>
<jxb:typesafeEnumMember value="6-12" name="SIX_TO_TWELVE"/>
...etc...
</jxb:typesafeEnumClass>
</appinfo>
</annotation>
这很好用,即使通过 wsdl2java 使用:枚举正确生成,并且该字段的类型为 EducationLevelType。
但是,我们不拥有 XSD 文件,因此不能选择使用内联自定义。
那么,我该如何进行这项工作呢?
任何帮助深表感谢。