避免从xml序列化程序发送未在自动生成的类上设置的对象属性

时间:2011-03-29 01:02:47

标签: c# xml serialization

我从第三方Java Web服务导入了WSDL。其中一个方法需要一个ComplexType对象,当我导入WSDL时,该对象被序列化为C#上的一个类。 WSDL如下:

  <xsd:complexType name="MethodReturn">
    <xsd:sequence>
      <xsd:element name="param1" nillable="true" type="xsd:string" />
      <xsd:element name="param2" nillable="true" type="xsd:string" />
      <xsd:element name="param3" nillable="true" type="xsd:string" />
      <xsd:element name="param4" nillable="true" type="xsd:string" />
    </xsd:sequence>
  </xsd:complexType>

当我发送方法时,我收到以下错误:

org.xml.sax.SAXException: Invalid element in com.teste.webservice.model.MethodReturn - param3

第三方开发人员告诉我,在发送方法时,我不应该沿着序列化的XML发送param3属性。我怎样才能用C#实现这个目标?如果我设置MethodReturn = null,则该属性包含为xsil:nil =“true”,如下所示:

  <param1 xsi:type="xsd:string">U</param1>
  <param2 xsi:type="xsd:string">2032290</param2>
  <param3 xsi:nil="true"/>
  <param4 xsi:type="xsd:string">EU1</param4>

我想做的是根本不发送param3,如下所示。这可能吗?

  <param1 xsi:type="xsd:string">U</param1>
  <param2 xsi:type="xsd:string">2032290</param2>
  <param4 xsi:type="xsd:string">EU1</param4>

韩国社交协会

1 个答案:

答案 0 :(得分:1)

第三方开发人员或WSDL是错误的。如果WSDL错误,则编辑它:

<xsd:complexType name="MethodReturn">
<xsd:sequence>
  <xsd:element name="param1" nillable="true" type="xsd:string" />
  <xsd:element name="param2" nillable="true" type="xsd:string" />
  <xsd:element name="param3" type="xsd:string" />
  <xsd:element name="param4" nillable="true" type="xsd:string" />
</xsd:sequence>