Java 当元素具有空值时,如何接受xsd与xml验证
我有一个xml,必须根据xsd验证结构和数据类型。但是xml中的某些字段具有null/空值。但是当使用JAXB验证xml时Java 当元素具有空值时,如何接受xsd与xml验证,java,xml,validation,parsing,jaxb,Java,Xml,Validation,Parsing,Jaxb,我有一个xml,必须根据xsd验证结构和数据类型。但是xml中的某些字段具有null/空值。但是当使用JAXB验证xml时 “cvc数据类型有效。1.2.1:“”不是“整数”的有效值。” 此异常是从带有链接SaxParserError异常的JAXB异常引发的。但是我必须接受带有空值的xml。这些线 并且显示了我们必须修改关于xsd的xml,以便它能够接受null/empty值 是否有其他方法可以覆盖ValidationHandler类和Unmarshaller类的方法以接受空值。我猜您试图将 &
“cvc数据类型有效。1.2.1:“”不是“整数”的有效值。”
此异常是从带有链接SaxParserError异常的JAXB异常引发的。但是我必须接受带有空值的xml。这些线
并且显示了我们必须修改关于xsd的xml,以便它能够接受null/empty值
是否有其他方法可以覆盖ValidationHandler类和Unmarshaller类的方法以接受空值。我猜您试图将
<myinteger></myinteger>
但是您必须添加这个xsi:nil=“true”
如果您确实希望接受此选项:
<myinteger></myinteger>
您可以按如下方式更改XSD:
<element name="myinteger" type="IntegerOrNothing" />
<xsd:simpleType name="IntegerOrNoting">
<xsd:union memberTypes="xsd:integer">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="" />
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
如果使用Jaxb从XSD生成bean,默认情况下,这种类型的字段将是
String
。然后,您需要使用自定义绑定来获取整数字段。我猜您试图将
<myinteger></myinteger>
但是您必须添加这个xsi:nil=“true”
如果您确实希望接受此选项:
<myinteger></myinteger>
您可以按如下方式更改XSD:
<element name="myinteger" type="IntegerOrNothing" />
<xsd:simpleType name="IntegerOrNoting">
<xsd:union memberTypes="xsd:integer">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="" />
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
如果使用Jaxb从XSD生成bean,默认情况下,这种类型的字段将是
String
。然后需要使用自定义绑定来获取整数字段。失败元素的模式定义是什么样子的?XML中的“null”值是什么?如果XSD将元素指定为类型为xs:integer
,则该元素中的空值无效。这是没有办法的。您可以将元素设置为可选(minOccurs=“0”
)并在XML中完全忽略它。但最后,如果生成这样的空元素,则生成端应该发生更改。@Seelenvirtuose我已使minoccurs=0。但仍然会抛出错误。“cvc数据类型有效。1.2.1:“”不是“整数”的有效值。Null表示为空。Yes empty无效。但如何接受。我不想更改此操作的XML模式。有什么办法吗?Errrrm…当我说“没有办法”时是否太含糊不清?另外,当声明minOccurs=“0”“
这意味着可以省略该元素。如果它在那里,它也不能是空的。这就是XSD的目的。如果您不想让XML符合XSD,那么就不要验证它!您是否为您的元素尝试过nillable选项?失败元素的模式定义是什么样子的?XML中的“null”值是什么?如果XSD将元素指定为类型为xs:integer
,则该元素中的空值无效。这是没有办法的。您可以将元素设置为可选(minOccurs=“0”
)并在XML中完全忽略它。但最后,如果生成这样的空元素,则生成端应该发生更改。@Seelenvirtuose我已使minoccurs=0。但仍然会抛出错误。“cvc数据类型有效。1.2.1:“”不是“整数”的有效值。Null表示为空。Yes empty无效。但如何接受。我不想更改此操作的XML模式。有什么办法吗?Errrrm…当我说“没有办法”时是否太含糊不清?另外,当声明minOccurs=“0”“
这意味着可以省略该元素。如果它在那里,它也不能是空的。这就是XSD的目的。如果您不想让XML符合XSD,那么就不要验证它!您是否为您的元素尝试过nillable选项?还有一件事,我的xml包含的数据是整数,它包含的字符串或字符值是null。如何在没有jaxbI中的xsd的情况下进行验证?我不明白这里的问题是什么?还有一件事,我的xml包含数据,数据为整数,字符串或字符值为null。如何在没有jaxbI中的xsd的情况下进行验证不明白您的问题是什么?