[英]JAVA JAXB enum int value instead of enum name
我对 jaxb 和编组到 xml 有问题。 我有这个 xsd:
<xs:simpleType name="PointType">
<xs:restriction base="xs:int">
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
<xs:enumeration value="5"/>
<xs:enumeration value="6"/>
<xs:enumeration value="7"/>
<xs:enumeration value="8"/>
<xs:enumeration value="9"/>
<xs:enumeration value="10"/>
<xs:enumeration value="11"/>
</xs:restriction>
</xs:simpleType>
这个xjc:
<jxb:bindings schemaLocation="../xsd/test.xsd">
<jxb:bindings node="//xs:simpleType[@name='PointType']">
<jxb:typesafeEnumClass/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='0']">
<jxb:typesafeEnumMember name="STOP"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='1']">
<jxb:typesafeEnumMember name="ADDRESS"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='2']">
<jxb:typesafeEnumMember name="POI"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='3']">
<jxb:typesafeEnumMember name="GEO_COORDINATE"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='4']">
<jxb:typesafeEnumMember name="UNKNOWN"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='5']">
<jxb:typesafeEnumMember name="ALIAS"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='6']">
<jxb:typesafeEnumMember name="CAR_SHARING"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='7']">
<jxb:typesafeEnumMember name="TAXI"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='8']">
<jxb:typesafeEnumMember name="CAR_RENTAL"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='9']">
<jxb:typesafeEnumMember name="TARIFF_POINT"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='10']">
<jxb:typesafeEnumMember name="UNUSED_10"/>
</jxb:bindings>
<jxb:bindings node="//xs:simpleType[@name='PointType']/xs:restriction/xs:enumeration[@value='11']">
<jxb:typesafeEnumMember name="UNUSED_11"/>
</jxb:bindings>
</jxb:bindings>
如果我使用 java 对象创建请求,我将创建一个 PointType.STOP 类型的点 object。
Point point = new Point();
point.setPointId(pointId);
point.setType(PointType.STOP);
在生成的 xml 中,类型是 'STOP' 而不是数值。
{"pointVerification":{"point"
{"pointId":null,"type":"STOP","name":"Test","region":null,
该类型应填充 0 值而不是 enum 的名称。 谁能帮我?
您可以通过在enum
上使用@XmlEnum
注释以及每个常量的@XmlEnumValue
来做到这一点:
@XmlEnum(Integer.class)
public enum PointType {
@XmlEnumValue("0") STOP,
@XmlEnumValue("1") ADDRESS,
@XmlEnumValue("2") POI,
@XmlEnumValue("3") GEO_COORDINATE
// etc.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.