为啥我在 XML 反序列化函数中收到此错误?
Posted
技术标签:
【中文标题】为啥我在 XML 反序列化函数中收到此错误?【英文标题】:Why do I get this error at XML Deserialization function?为什么我在 XML 反序列化函数中收到此错误? 【发布时间】:2021-05-27 19:32:57 【问题描述】:我创建了两个函数,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。
你能帮帮我吗?
谢谢。
【问题讨论】:
这能回答你的问题吗? Deserialization error in XML document(1,1) 如果第一行的标签有命名空间,您可能会遇到命名空间问题。 【参考方案1】: fds = dsa.Deserialize(pdm.ToString());
您想反序列化 xml 变量,但使用 pdm.ToString() 代替。 试试
fds = dsa.Deserialize(xml);
【讨论】:
谢谢!我很着急,似乎我使用了错误的变量。这帮助我解决了这个问题。【参考方案2】:您似乎正在将train.GetDetails()
返回的对象序列化为XML 字符串xml
,但您正在尝试反序列化pdm.ToString()
返回的字符串(不一定是XML 字符串)。您是否打算致电dsa.Deserialize(xml)
?
【讨论】:
感谢您的回答!这解决了我的问题。以上是关于为啥我在 XML 反序列化函数中收到此错误?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jackson 反序列化 JSON - 为啥 JsonMappingException“没有合适的构造函数”?