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

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

  • 相关阅读:
    老杳:2017年中国集成电路产业十大新闻
    RMA退货流程解决方案
    Linux
    vue.js
    NET Core度身定制的AOP框架
    Timeline
    HTTP
    MVC 常用扩展点:过滤器、模型绑定等
    装箱拆箱
    jQuery Tree
  • 原文地址:https://www.cnblogs.com/seayxu/p/cs-xml-deserialize-exception-root-element-missing.html
Copyright © 2011-2022 走看看