Deserializar XML

27/06/2007 - 19:39 por Hoze \(SMM\) | Informe spam
Hola a todos. Recibo una respuesta SOAP a una petición que hago a través de
un WebService. Por determinados motivos, la respuesta la recibo en un
fichero xml.
Estoy intentando deserializar el mensaje, que es muy muy simple:

<?xml version="1.0" encoding="UTF-8"?>
<S2 xmlns:xsi="https://www3.aeat.es/s.xsd"
xmlns:xsd="https://www3.aeat.es//SDat.xsd" Id="20070208V20004560001"
NifDec="99999999R" NombreRazon="PEPITO">
<Respuestas>
<IdMovCont>123456789012345678901</IdMovCont>
<CodRet>0000</CodRet>
<DesRet>Correcto</DesRet>
</Respuestas>
<Respuestas>
<IdMov>234567890123456789012</IdMov>
<CodRet>7012</CodRet>
<DesRet>Error.</DesRet>
</Respuestas>
</S2>


El código que utilizo es el siguiente:
SV2Sal Respuesta= new SV2Sal();
Respuesta.Respuestas = new RespuestasTipo[999];

XmlSerializer mySerializer = new XmlSerializer(typeof(SV2Sal));

FileStream fs = new FileStream(Path,
FileMode.Open,FileAccess.Read,FileShare.None,4096,FileOptions.DeleteOnClose);

XmlTextReader r = new XmlTextReader(fs);

try
{
Respuesta = (SV2Sal)mySerializer.Deserialize(r);
}


Esto no me da error con el mensaje anterior, pero cuando examino mi objeto
respuesta, el array de Respuestas está vacío, mientras que el objeto SV2Sal
tiene todos sus datos de cabecera bien.

¿sabéis a qué es debido esto?


Gracias!

Preguntas similare

Leer las respuestas

#1 Diego Jancic
28/06/2007 - 05:30 | Informe spam
Hola,
A que error te referis con esto?:

Esto no me da error con el mensaje anterior...



Otra cosa que no es causa del error, es que vos estas asignando Respuesta 2
veces, lo cual no tiene sentido. Me refiero a esto:

SV2Sal Respuesta= new SV2Sal();
Respuesta.Respuestas = new RespuestasTipo[999];

// BLOQUE DE CODIGO DONDE NO SE USA Respuesta

Respuesta = (SV2Sal)mySerializer.Deserialize(r);


Debido a que esta devolviendo una nueva instancia no vas a importar lo que
hagas antes... (estas creando un nuevo objeto y sobrescribiendo el puntero)
Si quisieses instanciar Respuesta.Respuestas deberias hacerlo en el
constructor, y sinceramente te recomiendo usar un List<Respuesta>...

Saludso,
Diego
Respuesta Responder a este mensaje
#2 Hoze \(SMM\)
28/06/2007 - 07:55 | Informe spam
El objeto SV2Sal implementa internamente un array de respuestas. Este objeto
lo crea automáticamente .NET al añadir la referencia del WebService en la
red. Supuestamente al ejecutar el método Deserialize, me debería dar ese
array interno completado, pero como comento, no lo hace así y en su lugar me
rellena únicamente los atributos del objeto SV2Sal, dejándome el array
vacío...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida