我尝试了几件事: 1) xs:simpleType name="matchAnalysisType" xs:restriction base="xs:string" xs:enumeration value="A"/ xs:enumeration value=""/ /xs:restriction /xs:simpleType JaxB不生成枚举,而是将matchAnalysisType标记为相应
1)
<xs:simpleType name="matchAnalysisType"> <xs:restriction base="xs:string"> <xs:enumeration value="A"/> <xs:enumeration value=""/> </xs:restriction> </xs:simpleType>
JaxB不生成枚举,而是将matchAnalysisType标记为相应元素类型的字符串.
2)使用’nillable’:
<xs:element name="matchAnalysisType" type="matchAnalysisType" nillable="true"> </xs:element>
JaxB抛出”无效的错误.
该问题适用于其他元素类型,如下所示:
<xs:element name="accountNumber" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:totalDigits value="9"/> </xs:restriction> </xs:simpleType> </xs:element>
我想有一个示例xml允许以下内容,没有任何验证错误.
<accountNumber></accountNumber>
思考?
JAXB没有与“”对应的枚举值的默认枚举值名称.如果使用外部绑定文件提供名称,则JAXB实现可以生成与此XML模式类型对应的Java枚举.binding.xml
<jxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1"> <jxb:bindings schemaLocation="your-schema.xsd"> <jxb:bindings node="//xs:simpleType[@name='matchAnalysisType']/xs:restriction/xs:enumeration[@value='']"> <jxb:typesafeEnumMember name="BLANK"/> </jxb:bindings> </jxb:bindings> </jxb:bindings>
XJC电话
使用-b参数在XJC调用中指定绑定文件:
xjc -b binding.xml your-schema.xsd
欲获得更多信息
> http://blog.bdoughan.com/2011/08/jaxb-and-enums.html