为什么在 XML 反序列化函数中会出现此错误?

问题描述

我创建了两个函数,XML 序列化和反序列化。 问题是我在反序列化时遇到错误。 您可以在下面找到这些功能

public string Serialize(Object o)
{
    using (var writer = new StringWriter())
    {
        new XmlSerializer(o.GetType()).Serialize(writer,o);
        return writer.ToString();
    }
}

public PathDetailsMessage Deserialize(string xml)
{
    using (TextReader reader = new StringReader(xml))
    {
         XmlSerializer serializer = new XmlSerializer(typeof(PathDetailsMessage));
         return (PathDetailsMessage)serializer.Deserialize(reader);
    }
}

还有电话:

static void Main(string[] args)
{
    PathDetailsBLL train = new PathDetailsBLL();
    PathDetailsMessage pdm = train.GetDetails();
    string xml = train.Serialize(pdm);
    PathDetailsBLL dsa = new PathDetailsBLL();
    PathDetailsMessage fds = new PathDetailsMessage();
    fds = dsa.Deserialize(pdm.ToString());
    Console.Write(fds);
    Console.ReadKey();
}

在行 return (PathDetailsMessage)serializer.Deserialize(reader); 上,我收到以下错误

system.invalidOperationException: 'XML 文档 (1,1) 中存在错误。'

XmlException:根级别的数据无效。第 1 行,位置 1。

你能帮我吗?

谢谢。

解决方法

 fds = dsa.Deserialize(pdm.ToString());

您想反序列化 xml 变量,但改用 pdm.ToString()。 试试

 fds = dsa.Deserialize(xml);
,

您似乎正在将 train.GetDetails() 返回的对象序列化为 XML 字符串 xml,但您试图反序列化 {{ 返回的字符串(不一定是 XML 字符串) 1}}。相反,您是否打算致电 pdm.ToString()