加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Xml Schema / JaxB – 如何在架构中启用空枚举,字符串,整数值而

发布时间:2020-12-16 22:50:44 所属栏目:百科 来源:网络整理
导读:我尝试了几件事: 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读