¿Cómo ignorar cosas de jabón en deserializar xml para objetar?
Cuando obtengo un xml, necesito deserializarlo a un objeto específico y pasarlo a través de un parámetro en un método de servicio web.
Código:
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);
Pero cuando intento deserializar aparece un error que dice
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > was not expected.
Necesito ignorar la etiqueta del sobre y otras cosas de SOAP. ¿Cómo puedo hacer eso?
El archivo xml:
<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>
Código de prueba:
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());
El jabonBody
obtiene el<ns:INCLUIRCONHECIMENTOFRETESAIDA>
Con toda la información que necesito. Pero cuando lo deserializo pararesponseObj
Obtengo todos los valores como nulos.