DataContractSerializer,xsd和response xml

时间:2016-12-12 07:44:57

标签: c# xml soap xsd wsdl

我即将在我的应用程序中集成第三方SOAP服务。我无法控制这项服务,我只是得到了一些.xsd文件,一个wsdl文件和一些示例响应。我使用默认方式在Visual Studio中生成代理客户端。我已经将相同的wsdl添加到Soap UI以及响应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"

或者该值仅为null?由于显而易见的原因,我不能在这里发布wsdl或.xsd文件..

提前致谢。

1 个答案:

答案 0 :(得分:0)

不要担心空值。只要他们填写了你需要的价值,你就可以去。

有时他们想要对所有类型的请求做出一种响应。他们倾向于添加其他请求类型不需要的字段。