我已经创建了两个函数,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。
你能帮我吗?
谢谢你。
发布于 2021-02-25 20:42:19
fds = dsa.Deserialize(pdm.ToString());
您希望反序列化xml变量,但是使用pdm.ToString()。尝试
fds = dsa.Deserialize(xml);
发布于 2021-02-25 20:44:47
看起来您正在序列化由返回的对象train.GetDetails()
转换为XML字符串,xml
,但是您正在尝试反序列化由返回的字符串(不一定是XML字符串)pdm.ToString()
。你是不是打算打电话给dsa.Deserialize(xml)
https://stackoverflow.com/questions/66368543
复制相似问题