1

Camarades,XML Сериализация и десериализация Проблема Структура XML

У меня возникла следующая проблема. Поймал список Struct, Serialize (Valid W3C) и отправил в WebService. В WebService я получаю преобразование в строку, действительную с помощью W3C, а затем Deserializer, но когда я пытаюсь запустить ее, всегда возникает ошибка, говоря, что некоторые объекты не были закрыты.

Любая помощь?

Направлено Код:

#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 

Получить код:

#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 
+0

Если вы вызываете эти методы вместе последовательно, они работают? (То есть, вы уверены, что эти два метода имеют проблему, а не вызов веб-службы?) –

+0

Спасибо, приятель, но мне удалось решить проблему. Спасибо за помощь. –

ответ

0

После долгих усилий и изучить некоторый код из Интернета, мне удалось решить эту проблему. Я не знаю, какая причина, однако, знает, что так работает. Ниже кода.

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; 
Смежные вопросы