次の型定義を含むWSDLがあります。
...
<xsd:complexType name="OrderItem">
<xsd:all>
<xsd:element name="source" type="xsd:string" />
</xsd:all>
</xsd:complexType>
<xsd:complexType name="OrderItems">
<xsd:sequence>
<xsd:element name="item" type="tns:OrderItem" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
...
VS 2010でサービスをサービス参照として追加する場合、OrderItems
クラスにitem
はタイプが。のプロパティが含まれますOrderItem[]
。次に、SOAPリクエストが次のように生成されます。
...
<items>
<OrderItem>
<item>foo</item>
<item>bar</item>
</OrderItem>
</items>
...
XmlArray
およびXmlArrayItem
属性を使用して、<OrderItem>
および<item>
要素の名前をそれぞれ制御できますが、目的の構造に到達できません。
...
<items>
<item>foo</item>
<item>bar</item>
</items>
...
<xsd:restriction base="soap-enc:Array">
WSDLが無制限のシーケンスではなくのようなものを指定した場合、この問題を回避できることを私は知っていますが、上記を考えると、カスタムシリアル化を使用する唯一の方法はありますか?
編集: https://gist.github.com/1422704のWSDLの例