资讯专栏INFORMATION COLUMN

C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

scq000 / 1015人阅读

摘要:在反序列化字符串为对象时,抛出如下异常。即在文档中有一个错误缺少根元素。首先看下代码抛出异常是在这里出现的。问题在于这里,原因是进行了写入操作,最后流的位置停留在尾部。因此,在反序列化之前将流的位置定位到开始的位置即可。

Q:

在反序列化 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 的位置即可。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110357.html

相关文章

  • Python基础之(十)模块

    摘要:是回调函数,当链接服务器和相应数据传输完毕时触发本函数可选。仅仅是针对的,在中,已经没有这个模块了,取代它的是。由于以流式读取文件,从而速度较快,切少占用内存,但是操作上稍复杂,需要用户实现回调函数。 编写模块 模块是程序 模块就是一个扩展名为.py的Python程序。 编写模块 #!/usr/bin/env python # coding=utf-8 lang = python 引...

    jlanglang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<