带有枚举的 Xsd - 输入枚举类型时出现错误

问题描述 投票:0回答:2

我正在尝试添加枚举类型,如下所示。它添加了字符串类型,但当 jaxb 将 xsd 转换为 java 类时我需要枚举值。我使用 simpletype 将其转换为字符串,但不确定如何在元素内更改它,就像我尝试更改它一样,它会给我错误。

<xs:element name="DeletionReq">
    <xs:complexType>
        <xs:sequence>
                <xs:element name="Id" type="xs:long"/>
                <xs:element name="isNewProcess" type="xs:boolean" default="false"/>
                <xs:element name="data" type="tns:data" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
<xs:complexType name="data">
    <xs:sequence>
                      <xs:element name="dataColumnName" type="xs:string" minOccurs="0" />
                      <xs:element name="dataOldValue"   type="xs:string" minOccurs="0"/>
                      <xs:element name="dataNewValue"   type="xs:string" minOccurs="0"/>
                      <xs:element name="testRecord"   type="xs:string" minOccurs="0"/>
                      <xs:element name="projId"   type="xs:string" minOccurs="0"/>
                      <xs:element minOccurs="0" name="allowedApplDataColumnNames">
                          <xs:simpleType>
                            <xs:restriction base="xs:string">
                              <xs:enumeration value="code1" />
                              <xs:enumeration value="code2" />
                              <xs:enumeration value="code3" />
                              <xs:enumeration value="code4" />
                              <xs:enumeration value="code5" />
                            </xs:restriction>
                          </xs:simpleType>
                       </xs:element>
    </xs:sequence>
</xs:complexType>
enums xsd jaxb xsd-validation
2个回答
0
投票

您可以在complexType之外定义类型

data
,如下所示:

<xs:simpleType name="allowedApplDataColumnNamesType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="code1" />
        <xs:enumeration value="code2" />
        <xs:enumeration value="code3" />
        <xs:enumeration value="code4" />
        <xs:enumeration value="code5" />
    </xs:restriction>
</xs:simpleType>

<xs:complexType name="data">
    <xs:sequence>
        <xs:element name="dataColumnName" type="xs:string" minOccurs="0" />
        <xs:element name="dataOldValue" type="xs:string" minOccurs="0"/>
        <xs:element name="dataNewValue" type="xs:string" minOccurs="0"/>
        <xs:element name="testRecord" type="xs:string" minOccurs="0"/>
        <xs:element name="projId" type="xs:string" minOccurs="0"/>
        <xs:element name="allowedApplDataColumnNames" type="allowedApplDataColumnNamesType" minOccurs="0" />
    </xs:sequence>
</xs:complexType>


0
投票

从枚举创建显式类型:

    <xs:complexType name="data">
        <xs:sequence>
            ...
            <xs:element minOccurs="0" name="allowedApplDataColumnNames" type="tns:myEnum"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:simpleType name="myEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="code1" />
            <xs:enumeration value="code2" />
            <xs:enumeration value="code3" />
            <xs:enumeration value="code4" />
            <xs:enumeration value="code5" />
        </xs:restriction>
    </xs:simpleType>
© www.soinside.com 2019 - 2024. All rights reserved.