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!
 

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

Preguntas similares