最後幾天我正在爲我的jaxb問題尋找解決方案,但沒有成功......所以我希望也許有人可以幫助我。操縱JAXB枚舉鍵名
該基地是來自外部合作伙伴的xsd模式,就是說,即我無法更改它。這些類用xjc生成沒有問題,但枚舉不是「兼容java」的。 其中一些值爲數字或字母數字,因此必須在綁定中設置屬性typesafeEnumMemberName =「generateName」。
Jaxb然後生成像VALUE_1,VALUE_2等枚舉鍵。我現在的問題是,某些枚舉有250個條目,只有條目的javadoc說明有關該值的信息。 這不是真的舒服,可以強制錯誤,因爲以下MandatType枚舉值VALUE_1的值是「E」,而不是「1」 .... 的xsd:
<xsd:simpleType name="MandatType">
<xsd:annotation>
<xsd:documentation/>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
<xsd:minLength value="1"/>
<xsd:enumeration value="E">
<xsd:annotation>
<xsd:documentation>Erinnerung</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="1">
<xsd:annotation>
<xsd:documentation>Klage</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="2">
<xsd:annotation>
<xsd:documentation>Beschaffung</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="Z">
<xsd:annotation>
<xsd:documentation>Storno</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
類:
@XmlType(name = "MandatType")
@XmlEnum
public enum MandatType {
/**
* Erinnerung
*
*/
@XmlEnumValue("E")
VALUE_1("E"),
/**
* Klage
*
*/
@XmlEnumValue("1")
VALUE_2("1"),
/**
* Beschaffung
*
*/
@XmlEnumValue("2")
VALUE_3("2"),
/**
* Storno
*
*/
@XmlEnumValue("Z")
VALUE_Z("Z"),
//...
}
我發現的唯一解決方案是在綁定enum鍵時爲每個枚舉值定義。但問題是,這是圍繞14.000價值! 那麼有沒有人有其他的想法來解決這個問題?是否有可能定義一個方法來覆蓋/更改枚舉值,當xjc生成類?或者爲枚舉的鍵使用xsd:documentation值?
提前感謝 斯蒂芬