我有以下架构
<xs:simpleType name="enumType">
<xs:restriction base="xs:string">
<xs:enumeration value="STRING_ONE"/>
<xs:enumeration value="STRING_TWO"/>
</xs:restriction>
</xs:simpleType>
只要我得到一个已知的字符串,我就可以将它转换为我的jaxbobject,它需要一个enumType
对象。但是,如果我不知道这个字符串怎么办?有没有办法基于JAXB Schema处理它?我知道基于枚举它不可能。
修改:尝试使其更清晰
在给定的Schema设计中,我的JAXBObject接受enumType
作为参数,只能有2个输入值,即STRING_ONE或STRING_TWO,它们将作为编组的一部分转换为XML。
问题是,如果我希望通过我的架构设计处理一种情况,如果我可以拥有enumType
的对象那么好,否则我可以将XML提供给JAXBObject而不是{{1}它仍在解析它。
答案 0 :(得分:1)
从XSD的角度来看,听起来你想要能够写
<xs:simpleType name="soft-enumeration">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="STRING_ONE"/>
<xs:enumeration value="STRING_TWO"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:union memberTypes="xs:string"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
此类型包含您描述的枚举,但随后将其与xs:string结合使用,以便接受其他值。如果您的架构界面允许您访问有关使用哪个成员类型的联合的信息,那么您可以使用该信息来处理STRING_ONE和STRING_TWO的实例与其他字符串的不同。
然而,我不知道jaxb是否对这个习语做了任何有用的事情;在那里,你自己。