XSD конвертировать JSON массив - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь преобразовать ниже JSON в XSD, однако мне не удалось найти правильный XSD для типа массива.

{
    "activeIndicator": true,
    "entities": [
        {
            "type": "one",
            "bid": "12444",
            "name": "dsdsddd"
        },
        {
            "type": "sss",
            "bid": "322333",
            "name": "sdfsfff"
        },
        {
            "type": "sddssddsd",
            "bid": "4343434",
            "name": "ffdssdddd"
        },
        {
            "type": "rerererer",
            "bid": "5767767",
            "name": "fdsfdffff"
        }
    ],
    "expiryDateIndicator": true
}

Ниже приведен XSD, который я описал с до сих пор.

<xsd:complexType name="EntityType">
    <xsd:sequence>
        <xsd:element name="type" type="xsd:string"/>
        <xsd:element name="bid" type="xsd:string"/>
        <xsd:element name="name" type="xsd:string"/>
    </xsd:sequence>
</xsd:complexType>

<xsd:element name="Response">
    <xs:complexType>
        <xsd:sequence>
            <xsd:element name="activeIndicator" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
            <xs:element name="entities">
                <xs:simpleType>
                    <xs:list itemType="EntityType"/>
                </xs:simpleType>
            </xs:element>
        </xsd:sequence>
    </xs:complexType>
</xsd:element>

Но выше выдается org. xml .sax.SAXParseException: неопределенный простой тип 'EntityType' при попытке компиляции. Любопытно узнать, чего мне здесь не хватает.

1 Ответ

1 голос
/ 06 февраля 2020

Тип элемента списка должен быть простым, а не сложным типом.

Вы не показали экземпляр XML, который хотите использовать для представления этих данных JSON, но Я думаю, что вряд ли использовать списочные типы. Я ожидал бы что-то вроде

<entities>
  <entity>
    <type>x</type>
    <bid>y</bid>
    <name>z</name>
  </entity>
  <entity>
    <type>x</type>
    <bid>y</bid>
    <name>z</name>
  </entity>
</entities>

, в этом случае entities будет определено как:

    <xs:element name="entities">
        <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
               <xs:element name="entity" type="EntityType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
...