XSD使用多个值定义ENUM

时间:2017-07-27 08:02:01

标签: java xsd

我希望通过XSD定义枚举,如下所示:

    public enum Coin { 
             @XmlEnumValue("1") PENNY(1),
             @XmlEnumValue("5") NICKEL(5),
             @XmlEnumValue("10") DIME(10),
             @XmlEnumValue("25") QUARTER(25) 
   }

Oracle-description详细说明了这个样本;但是我看不到ENUMs" PENNY"," NICKEL"等等来自这个例子。

 <!-- Example: XML Schema fragment -->
     <xs:simpleType name="Coin">
       <xs:restriction base="xs:int">
         <xs:enumeration value="1"/>
         <xs:enumeration value="5"/>
         <xs:enumeration value="10"/>
         <xs:enumeration value="25"/>
       </xs:restriction>
     </xs:simpleType>

1 个答案:

答案 0 :(得分:0)

因为它出现在Oracle description中,所以java enum示例代码不完整(它缺少枚举的私有参数化构造函数,允许PENNY(1)类型的声明)但用于说明目的使用通过@XmlEnumValue注释

传递的value参数在xsd和java之间进行映射

如此简单:

  • PENNY通过注释<xs:enumeration value="1"/>映射到@XmlEnumValue("1") PENNY(1)类型的声明是对参数化构造函数的调用,允许您将值保存在枚举的字段中

  • NICKEL通过注释<xs:enumeration value="5"/>映射到@XmlEnumValue("5") PENNY(5)类型的声明是对参数化构造函数的调用,允许您将值保存在枚举的字段中

同样的逻辑同样适用于其他值