私のアプリケーションにサードパーティのSOAPサービスを統合しようとしています。私はこのサービスを支配していない、私はちょうど.xsdファイル、wsdlファイルといくつかの例の応答の束を持っています。私はVisual Studioでプロキシクライアントを生成するためのデフォルトの方法を使用しています。私は応答XMLと一緒にSoap UIに同じwsdlを追加しました。DataContractSerializer、xsd、response xml
私のアプリケーションで応答を受け取ったとき、値の一部はnullです。 IEndpointBehavior and IClientMessageInspector
を実装するクラスをサービスクライアントに追加することにより、AfterReceiveReply
メソッドで期待されるxml応答を確認できます。プロキシオブジェクト内の値の一部はnullです。
サービス定義内のオブジェクトを調べると、タイプにOrder
属性がマークされていることがわかります。例えば:
[System.Xml.Serialization.XmlElementAttribute(Order=1)]
public string name { .......
私が最初に考えたのは、応答XMLが期待するすべての要素を含み、正しい順序での.xsdファイルに記載されていなかったということでした。
関連の.xsdファイルを見ると、要素は次のように定義されています。
<xs:element name="name" type="MyTypeHere" minOccurs="0">
<xs:annotation>
<xs:documentation>Some documentation</xs:documentation>
</xs:annotation>
</xs:element>
この要素は
minOccurs="0"
または値が唯一の意志としてマークされた場合の応答であっする必要がありませんヌルですか?明白な理由から、wsdlまたは.xsdファイルをここに掲載することはできません。
ありがとうございます。
あなたが何を求めているのかは分かりません。実際に問題はありますか? –
@CharlesMager xsdの要素にminOccurs = "0"とマークされている場合、応答xmlに入る必要がありますか?または値は空になりますが、タグはまだありますか?理解できますか?ありがとう。 –
「minOccurs = 0」はかなり自明です。要素が発生する必要がある最小回数は0です。したがって、応答にする必要はありません。オプションです。 –