zoukankan      html  css  js  c++  java
  • 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 的位置即可。

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

  • 相关阅读:
    Linux基础优化(二)
    权限
    分页
    序列化
    forms
    redis
    Django缓存机制
    跨域问题
    Django的ORM
    模板层
  • 原文地址:https://www.cnblogs.com/seayxu/p/cs-xml-deserialize-exception-root-element-missing.html
Copyright © 2011-2022 走看看