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


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

這里就是在 上面注釋的地方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM