2016-12-12 16 views
0

私のアプリケーションにサードパーティの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ファイルをここに掲載することはできません。

ありがとうございます。

+0

あなたが何を求めているのかは分かりません。実際に問題はありますか? –

+0

@CharlesMager xsdの要素にminOccurs = "0"とマークされている場合、応答xmlに入る必要がありますか?または値は空になりますが、タグはまだありますか?理解できますか?ありがとう。 –

+0

「minOccurs = 0」はかなり自明です。要素が発生する必要がある最小回数は0です。したがって、応答にする必要はありません。オプションです。 –

答えて

0

ヌル値を気にしないでください。彼らがあなたが必要とする価値を記入する限り、あなたは行くのが良いです。

場合によっては、すべてのタイプのリクエストに対して1つのタイプの応答が必要な場合があります。それらは、他の要求タイプには必要でないフィールドを追加する傾向があります。

+0

null値は、値を持たなければならず、未処理のxml応答に表示されます。 –

+0

その場合、そのサービスの管理者に連絡する必要があります。それはプログラミングエラーです。 –