C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

2017-01-07 08:37:41来源:cnblogs.com作者:seayxu人点击

Q:

在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常。
Xml反序列化异常

即在 XML文档(0, 0)中有一个错误:缺少根元素。

A:

首先看下代码:

StringBuilder sb = new StringBuilder();using (MemoryStream stream = new MemoryStream()){    StreamWriter writer = new StreamWriter(stream);    writer.Write(sb.ToString().Trim());    writer.Flush();    //stream.Position=0;    // or    //stream.Seek(0, SeekOrigin.Begin);    StreamReader reader = new StreamReader(stream);    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));    object obj = xmlSerializer.Deserialize(reader);    reader.Close();    reader.Close();    writer.Close();    writer.Dispose();}

抛出异常是在object obj = xmlSerializer.Deserialize(reader);这里出现的。

问题在于writer.Write(sb.ToString().Trim());这里,原因是进行了写入操作,最后流的位置停留在尾部。因此,在反序列化之前将流的位置定位到开始 0 的位置即可。

这里就是在 上面注释的地方。



相关文章

    无相关信息

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台