问题描述
我创建了两个函数,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()
?