使用XML方案中的字段创建枚举

时间:2014-07-15 13:49:32

标签: xml jaxb enumeration

我需要相当于这个:

public Enum myEnum {
  A(1),
  B(2),
  C(3)
}
如果有可能,在XML方案中

。我知道如何创建简单的枚举:

<xsd:simpleType name="myEnum">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="A"></xsd:enumeration>
        <xsd:enumeration value="B"></xsd:enumeration>
        <xsd:enumeration value="C"></xsd:enumeration>
    </xsd:restriction>
</xsd:simpleType>

但是对于第一个,我不知道。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果你使用了maven插件

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>

你必须改变

中的xsd
<xsd:simpleType name="myEnum">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="1"></xsd:enumeration>
        <xsd:enumeration value="2"></xsd:enumeration>
        <xsd:enumeration value="3"></xsd:enumeration>
    </xsd:restriction>
</xsd:simpleType>

并使用XJB文件进行绑定

        <bindings node="//xs:simpleType[@name='myEnum']/xs:restriction/xs:enumeration[@value='1']">
            <typesafeEnumMember name="A" />
        </bindings>

        <bindings node="//xs:simpleType[@name='myEnum']/xs:restriction/xs:enumeration[@value='2']">
            <typesafeEnumMember name="B" />
        </bindings>

        <bindings node="//xs:simpleType[@name='myEnum']/xs:restriction/xs:enumeration[@value='3']">
            <typesafeEnumMember name="C" />
        </bindings>

应生成此枚举

@XmlEnum
public enum MyEnum{

    @XmlEnumValue("1")
    A("1"),
    @XmlEnumValue("2")
    B("2"),
    @XmlEnumValue("3")
    C("3");
    private final String value;
}