【问题标题】:javax.xml.bind.UnmarshalException: Zero length BigInteger - with linked exception: [java.lang.NumberFormatException: Zero length BigIntegerjavax.xml.bind.UnmarshalException:零长度 BigInteger - 带有链接异常:[java.lang.NumberFormatException:零长度 BigInteger
【发布时间】:2015-06-12 02:12:13
【问题描述】:

当我使用axis2 环境验证WSDL 中的整数字段时,我收到以下错误。这适用于 xml bean。但是我收到了 xjc beans 对象的错误。 XSD 验证失败!!!当我传递空值时出现此错误。

请帮我解决这个问题。

 <xsd:element minOccurs="0" name="TypeName" type="types:PrincipalVariantType"/>
 <xsd:simpleType name="PrincipalVariantType">
    <xsd:restriction base="xsd:integer">
        <xsd:enumeration value="1" />
        <xsd:enumeration value="2" />
        <xsd:enumeration value="3" />
        <xsd:enumeration value="4" />
    </xsd:restriction>
  </xsd:simpleType>

堆栈跟踪

【问题讨论】:

  • [java.lang.NumberFormatException: 零长度 BigInteger] 看起来像是输入错误的情况
  • 我收到这个错误,当我通过空。但我的要求是,它会抛出错误,比如只允许值 1、2、3、4。

标签: xml xsd xml-parsing xsd-validation xjc


【解决方案1】:

按现状

<xsd:simpleType name="PrincipalVariantType">
   <xsd:restriction base="xsd:integer">
       <xsd:enumeration value="1" />
       <xsd:enumeration value="2" />
       <xsd:enumeration value="3" />
       <xsd:enumeration value="4" />
   </xsd:restriction>
</xsd:simpleType>

在这种情况下,仅&lt;TypeName&gt;1&lt;/TypeName&gt;&lt;TypeName&gt;2&lt;/TypeName&gt;&lt;TypeName&gt;3&lt;/TypeName&gt;&lt;TypeName&gt;4&lt;/TypeName&gt; 有效

注意:空值不是数字,不允许为整数。

如果您想在 xsd:string 中更改空字符串类型并在

中更改限制
<xsd:simpleType name="PrincipalVariantType">
    <xsd:restriction base="xsd:integer">
        <xsd:pattern value="[1-4\n]|()"/>
    </xsd:restriction>
</xsd:simpleType>

【讨论】:

    【解决方案2】:

    这对我来说也很好。

    <xsd:restriction base="xsd:string">
                    <xsd:pattern value="(\s*[1-4\n]\s*)+"/>
    </xsd:restriction>
    

    【讨论】:

    • 您想要所有出现的 [1-4] 和空格吗?例如&lt;TypeName&gt; 3 3 &lt;/TypeName&gt; .. 因为您的正则表达式允许这样做。
    猜你喜欢
    • 2017-12-31
    • 2014-09-29
    • 2012-02-26
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 2012-09-06
    • 2013-05-12
    • 2012-12-20
    相关资源
    最近更新 更多