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

来源:互联网 发布:jetbrains软件 编辑:程序博客网 时间:2024/05/20 06:50

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 的位置即可。

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

0 0