1

現在、Json と XSD をマッピングしています。Jsonには、同じ要素を持つ複数のアイテムを含む配列があります。

Json 配列は次のようになります。

"Item":[  
   {  
      "ItemSequenceNo":0,
      "AQuantity":{  
         "code":"aaa",
         "quantity":1
      },
      "DQuantity":{  
         "code":"ddd",
         "quantity":4
      },
      "Amount":{  
         "currencyID":"USD",
         "value":111
      },

   },
   {  
      "ItemSequenceNo":1,
      "AQuantity":{  
         "code":"aaa",
         "quantity":4
      },
      "DQuantity":{  
         "code":"ddd",
         "quantity":9
      },
      "Amount":{  
         "currencyID":"USD",
         "value":123
      },
   }
]

この Json 配列を XSD でマップしようとしました。

<xs:element name="Item">
    <xs:complexType>
        <xs:sequence minOccurs="1" maxOccurs="50">
            <xs:element ref="p:ItemSequenceNo" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="p:AQuantity" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="p:DQuantity" minOccurs="1" maxOccurs="1"/>
            <xs:element ref="p:Amount" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

参照は次のようになります。

<xs:element name="ItemSequenceNo">
    <xs:simpleType>
        <xs:restriction base="xs:integer">
            <xs:totalDigits value="5"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="AQuantity">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:integer">
                <xs:attribute name="code">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:minLength value="0"/>
                            <xs:maxLength value="3"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>
<xs:element name="DQuantity">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:integer">
                <xs:attribute name="code">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:minLength value="0"/>
                            <xs:maxLength value="3"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>
<xs:element name="Amount">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="xs:integer">
                <xs:attribute name="CurrencyID">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:minLength value="0"/>
                            <xs:maxLength value="3"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>

問題は、Json 配列を XSD でマッピングしているときです。出力 XML は、以下のように配列項目 (要素) で並べ替えられます。

<item>
    <ItemSequenceNo >0</ItemSequenceNo>
    <ItemSequenceNo >1</ItemSequenceNo>
    <AQuantity code="aaa">1</AQuantity>
    <AQuantity code="aaa">4</AQuantity>
    <DQuantity code="ddd">4</DQuantity>
    <DQuantity code="ddd">9</DQuantity>
    <Amount CurrencyID="USD">111</Amount>
    <Amount CurrencyID="USD">123</Amount>
</item>

私が期待している結果は2つの別々のブロックです:

<item>
    <ItemSequenceNo >0</ItemSequenceNo> 
    <AQuantity code="aaa">1</AQuantity> 
    <DQuantity code="ddd">4</DQuantity> 
    <Amount CurrencyID="USD">111</Amount>
</item>

<item>
    <ItemSequenceNo >1</ItemSequenceNo>
    <AQuantity code="aaa">4</AQuantity>
    <DQuantity code="ddd">9</DQuantity>
    <Amount CurrencyID="USD">123</Amount>
</item>

どうすればこれを取得できるかについて、誰かが考えを持っていますか? Json/XSDを変更することによって、またはMapForceこれを達成できる機能はありますか?

4

1 に答える 1