相关文章推荐
活泼的灌汤包  ·  java ...·  3 天前    · 
英勇无比的领带  ·  利用jQuery ...·  1 年前    · 

首先看下代码:

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

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

本文来自博客园,作者:CodeHsu,转载请注明原文链接:https://www.cnblogs.com/seayxu/p/cs-xml-deserialize-exception-root-element-missing.html