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

2022-11-25,,,,

Q:

在反序列化 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 的位置即可。

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

C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”的相关教程结束。

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

下载本文的Word格式文档,以方便收藏与打印。