开发者

XML Serialize and Deserialize Problem XML Structure

Camarades,

I'm having the following problem. Caught a list Struct, Serialize (Valid W3C) and send to a WebService. In the WebService I receive, transform to a string, valid by the W3C and then Deserializer, but when I try to run it, always occurs error, saying that some objects were not closed.

Any help?

Sent Code:

#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

Receive Code:

    #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);
            t开发者_Python百科hrow _Ex;
        }
    }
    #endregion


After much effort, and to examine some code from the internet, I managed to solve the problem. I do not know what reason, however, know that this way works. Below the code.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜