1

Camarades,XML XML 직렬화 및 deserialize 문제 XML 구조

다음과 같은 문제가 있습니다. Struct, Serialize (유효한 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

이러한 메서드를 순차적으로 호출하면 작동합니까? (즉,이 두 가지 methoods가 웹 서비스 호출이 아니라 문제를 가지고 있다는 긍정적입니까?) –

+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;