使用JAXB自定义java枚举的生成

时间:2011-11-17 17:44:50

标签: java binding jaxb

在对XML模式使用jaxb时,我正在使用外部绑定文件。

我主要使用绑定文件从XML模式基元映射到我自己的类型。

这是绑定文件的片段

   <jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ai="http://java.sun.com/xml/ns/jaxb/xjc" extensionBindingPrefixes="ai">
        <jxb:bindings schemaLocation="xsdurl" node="xs:schema">
             <jxb:globalBindings>
                 <jxb:javaType name="com.companyname.StringType" xmlType="xs:string"  
              parseMethod="parse" printMethod="print" hasNsContext="true">
                 </jxb:javaType>
             </jxb:globalBindings>
        </jxb:bindings>
    </jxb:bindings>

因此,只要遇到xs:string,就会调用com.companyname.StringType方法print / parse进行编组/解组等。

现在,如果JAXB遇到xs:enumeration,它将生成一个java enum

例如:

<xs:simpleType name="Address">
    <xs:restriction base="xs:string">
        <xs:enumeration value="ADDR"/>
        <xs:enumeration value="PBOX"/>
    </xs:restriction>
</xs:simpleType>

    public enum Address
    {

        ADDR,
        PBOX,

        public String value() {
           return name();
        }

        public static Address fromValue(String v) {
          return valueOf(v);
        }
     }

有没有人知道是否可以自定义enum的创建,就像它是原始的一样?我希望能够:

  1. 为jaxb生成的每个枚举添加标准成员变量/其他方法。

  2. 指定用于创建enum的静态方法。

0 个答案:

没有答案