【发布时间】:2015-04-09 08:37:36
【问题描述】:
我的运输类带有注释:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
public class PersonalData {
@XmlElement
private ETSalutation salutation;
}
生成的 XSD 很好:
<xs:element name="salutation" type="tns:ETSalutation"/>
已知的事实是,当在传入的 XML 中找到未知值时,JAXB 将设置为 null。我需要检查它,所以我想使用 XmlAdapter 进行内部验证。但是当我实现一个适配器时:
class ETSalutationEnumAdapter implements XmlAdapter<String, ETSalutation>
并附上:
@XmlElement
@XmlJavaTypeAdapter(ETSalutationEnumAdapter.class)
private ETSalutation salutation;
...我在 XSD 中得到一个字符串类型:
<xs:element name="salutation" type="xs:string"/>
当我使用 @XmlElement(type = ETSalutation.class) 强制类型时,在适配器中我将得到 ClassCastException。
所以,长话短说:我怎样才能在 XSD 中保留我的 Enum 类型并且仍然能够访问它的传入原始字符串值?
布莱斯? :)
【问题讨论】: