gpt4 book ai didi

jaxb - Xml Schema/JaxB - 如何在模式中启用空枚举、字符串、整数值而不会出现验证错误?

转载 作者:行者123 更新时间:2023-12-02 11:00:04 27 4
gpt4 key购买 nike

我尝试了几件事:

1)

<xs:simpleType name="matchAnalysisType">
<xs:restriction base="xs:string">
<xs:enumeration value="A"/>
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>

JaxB 不会生成枚举,而是将 matchAnalysisType 标记为相应元素类型的字符串。

2)使用“可空”:

 <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 没有对应于“”的枚举值的默认枚举值名称。如果您使用外部绑定(bind)文件来提供名称,您的 JAXB 实现可以生成与此 XML 模式类型相对应的 Java 枚举。

绑定(bind).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 通话

绑定(bind)文件在 XJC 调用中使用 -b 参数指定:

xjc -b binding.xml your-schema.xsd

了解更多信息

关于jaxb - Xml Schema/JaxB - 如何在模式中启用空枚举、字符串、整数值而不会出现验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7714089/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com