忽略.NET中序列化的XSD序列顺序

忽略.NET中序列化的XSD序列顺序,.net,xml,web-services,xsd,.net,Xml,Web Services,Xsd,我正在使用.NET中的第三方web服务(我无法控制) 我注意到当响应返回并从服务序列化时,我的一些属性没有被设置 我注意到他们的反应有些奇怪 这是他们的WSDL的一个示例 <xs:complexType name="letters"> <xs:complexContent> <xs:extension base="tns:response"> <xs:sequence>

我正在使用.NET中的第三方web服务(我无法控制)

我注意到当响应返回并从服务序列化时,我的一些属性没有被设置

我注意到他们的反应有些奇怪

这是他们的WSDL的一个示例

<xs:complexType name="letters">
    <xs:complexContent>
        <xs:extension base="tns:response">
            <xs:sequence>
                <xs:element name="a" type="xs:long" />
                <xs:element minOccurs="0" name="b" type="xs:dateTime" />
                <xs:element maxOccurs="unbounded" minOccurs="0" name="c" nillable="true" type="tns:anotherComplexType" />
                <xs:element minOccurs="0" name="d" type="xs:dateTime" />
                <xs:element minOccurs="0" name="e" type="tns:string" />
                <xs:element minOccurs="0" name="f" type="tns:boolean" />
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

这是回复相关部分的样本:

<letters>
    <a>0</a>
    <b>2015-02-03T11:59:18+11:00</b>
    <d>2015-02-03T12:00:00+11:00</d>
    <f>true</f>
</letters>

0
2015-02-03T11:59:18+11:00
2015-02-03T12:00:00+11:00
真的
我怀疑,因为他们正在为
部分中的元素定义
,所以.NET序列化程序希望响应中包含所有元素?(因此,他们的响应破坏了他们的WSDL定义?)

谢谢

编辑 似乎响应返回了一个未知元素,特别是

<letters>
    <a>0</a>
    <b>2015-02-03T11:59:18+11:00</b>
    <d>2015-02-03T12:00:00+11:00</d>
    <otherElement>blue</otherElement>
    <f>true</f>
</letters>

0
2015-02-03T11:59:18+11:00
2015-02-03T12:00:00+11:00
蓝色
真的

它不是WSDL的一部分。这意味着
元素没有被序列化。我有没有办法忽略未知元素?

没有,
xsd:sequence
仅仅意味着元素必须有序。每个
xs:element
上的
@minOccurs
属性表示所需性
@minOccurs=0
时,元素是可选的。
(请注意
@minOccurs
@maxOccurs
的默认值是
1
,表示“必需”。)由于该序列中的许多元素都是
@minOccurs=0
,因此响应中不必出现所有元素。

谢谢,在我最初的问题中,这是正确的,但他们似乎返回了一个未知元素作为他们回答的一部分。是否有必要忽略这一点?如果它们返回的响应包含WSDL响应XSD不允许的元素,则它们违反了接口约定。告诉他们修复代码或修复XSD。