C#反序列化XML異常:在 XML文檔(0, 0)中有一個錯誤「缺乏根元素」

Q:

在反序列化 Xml 字符串爲 Xml 對象時,拋出以下異常。
Xml反序列化異常ui

即在 XML文檔(0, 0)中有一個錯誤:缺乏根元素。spa

A:

首先看下代碼:code

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);這裏出現的。xml

問題在於writer.Write(sb.ToString().Trim());這裏,緣由是進行了寫入操做,最後流的位置停留在尾部。所以,在反序列化以前將流的位置定位到開始 0 的位置便可。對象

這裏就是在 上面註釋的地方。blog

相關文章
相關標籤/搜索