how to ignore soap stuff on deserializing xml to object?

Viewed 20773

When I get a xml, I need to deserialize it to a specific object and pass it via parameter in a web service method.

Code:

 var document = new XmlDocument();
 document.Load(@"C:\Desktop\CteWebservice.xml");
 var serializer = new XmlSerializer(typeof(OCTE));
 var octe = (OCTE) serializer.Deserialize(new StringReader(document.OuterXml));

 serviceClient.InsertOCTE(octe);

But when I try to deserialize I get a error saying

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > was not expected.

I need to ignore the envelope tag and other SOAP stuff. How can I do that?

The xml file:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
              xmlns:ns="http://192.168.1.180:8085/">
 <soapenv:Header/>
 <soapenv:Body>
  <ns:INCLUIRCONHECIMENTOFRETESAIDA>
     <ns:CONHECIMENTOFRETE>
        <ns:CSTICMS></ns:CSTICMS>
     </ns:CONHECIMENTOFRETE>
  </ns:INCLUIRCONHECIMENTOFRETESAIDA>
<soapenv:Body>

Test Code:

XNamespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace m = "http://192.168.1.180:8085/"; 
var soapBody = xdoc.Descendants(soap + "Body").First().FirstNode;

var serializer =  new XmlSerializer(typeof(OCTE));
var responseObj = (OCTE)serializer.Deserialize(soapBody.CreateReader());

The soap Body gets the <ns:INCLUIRCONHECIMENTOFRETESAIDA> with all information that I need. But when I deserialize it to responseObj I get all values as null.

1 Answers
Related