XML serializar y deserializar problema de la estructura XML
-
28-09-2019 - |
Pregunta
Camarades,
Tengo el siguiente problema. Atrapados una lista Struct, Serialize (W3C XHTML) y envío a un servicio Web. En el servicio Web que recibo, transformarse en una cadena, válido por el W3C y luego deserializador, pero cuando intento ejecutarlo, siempre se produce un error, diciendo que algunos objetos no estaban cerrados.
Cualquier ayuda?
Código Enviado:
#region ListToXML
private XmlDocument ListToXMLDocument(object __Lista)
{
XmlDocument _ListToXMLDocument = new XmlDocument();
try
{
XmlDocument _XMLDoc = new XmlDocument();
MemoryStream _StreamMem = new MemoryStream();
XmlSerializer _XMLSerial = new XmlSerializer(__Lista.GetType());
StreamWriter _StreamWriter = new StreamWriter(_StreamMem, Encoding.UTF8);
_XMLSerial.Serialize(_StreamWriter, __Lista);
_StreamMem.Position = 0;
_XMLDoc.Load(_StreamMem);
if (_XMLDoc.ChildNodes.Count > 0)
_ListToXMLDocument = _XMLDoc;
}
catch (Exception __Excp)
{
new uException(__Excp).GerarLogErro(CtNomeBiblioteca);
}
return _ListToXMLDocument;
}
#endregion
Código de recepción:
#region XMLDocumentToTypedList
private List<T> XMLDocumentToTypedList<T>(string __XMLDocument)
{
List<T> _XMLDocumentToTypedList = new List<T>();
try
{
XmlSerializer _XMLSerial = new XmlSerializer(typeof(List<T>));
MemoryStream _MemStream = new MemoryStream();
StreamWriter _StreamWriter = new StreamWriter(_MemStream, Encoding.UTF8);
_StreamWriter.Write(__XMLDocument);
_MemStream.Position = 0;
_XMLDocumentToTypedList = (List<T>)_XMLSerial.Deserialize(_MemStream);
return _XMLDocumentToTypedList;
}
catch (Exception _Ex)
{
new uException(_Ex).GerarLogErro(CtNomeBiblioteca);
throw _Ex;
}
}
#endregion
Solución
Después de mucho esfuerzo, y para examinar un cierto código de la Internet, me las arreglé para resolver el problema. No sé qué razón, sin embargo, sabe que de esta manera las obras. A continuación el código.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(__XMLDocument);
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
xmlDoc.WriteTo(xmlWriter);
XmlSerializer _XMLSerial = new XmlSerializer(typeof(List<tinfCte>));
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(stringWriter.ToString()));
stream.Position = 0;
_XMLDocumentToTInfCTeList = (List<tinfCte>)_XMLSerial.Deserialize(stream);
return _XMLDocumentToTInfCTeList;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow