忽略.NET中序列化的XSD序列顺序
我正在使用.NET中的第三方web服务(我无法控制) 我注意到当响应返回并从服务序列化时,我的一些属性没有被设置 我注意到他们的反应有些奇怪 这是他们的WSDL的一个示例忽略.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>
<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。