1
我目前正在映射Json和XSD。 在Json中,数组包含具有相同元素的多个项目。如何将Json数组转换为XSD
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>
事情是当我使用XSD映射Json数组时,数组项(元素)排序的输出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>
,而我期待的结果是两个独立的模块:
<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
可以实现这个功能?
谢谢大家。问题解决了。事实证明,在MapForce中,数组可以被识别并生成我想要的输出。 – BOSubuntu