我正在使用JAXB从具有枚举的XML生成Java代码
<xs:simpleType name="color">
<xs:restriction base="xs:string">
<xs:enumeration value="Blue"/>
<xs:enumeration value="Green"/>
<xs:enumeration value="Yellow"/>
</xs:restriction>
</xs:simpleType>
我想为该枚举添加更多颜色,例如红色和白色。我们不想更新xsd或生成的XML / Java代码,因为这些不属于我们,我们希望保持现状。
选项1.如果有一种读取XSD的方式,当它读取xs:simpleType name =“ color”时,我可以向枚举添加颜色,因此生成的java枚举具有所有需要的值
选项2。如果我可以编写一个适配器来帮助我在生成的Enum中添加值
我已经检查了XMLAdapter,但是重写对我的情况没有帮助。由于它是一个枚举,因此我很难修改它,因为Enums在Java中是恒定的
答案 0 :(得分:0)
由于很难在枚举中插入值,因此我们使用自定义的JAXB绑定将“ color”元素从Enum转换为String类型。
<jaxb:bindings node="//xs:simpleType[@name='color']">
<jaxb:typesafeEnumClass map="false" />
</jaxb:bindings>
现在可以插入新值。我们知道这样做是有风险的,因为“颜色”元素现在可以接受任何字符串,但是从我们的项目角度来看,它对我们有用。