2

这是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 文件,因此不能选择使用内联自定义。

那么,我该如何进行这项工作呢?

任何帮助深表感谢。

4

0 回答 0