我正在尝试使用xml序列化将对象序列化到数据库中,但是在反序列化时我收到错误。
错误 XML文档中存在错误(2,2) ,内部异常为"<MyCustomClass xmlns=''> was not expected."
我用来序列化的代码是:
public static string SerializeToXml<T>(T obj)
{
if (obj == null)
return string.Empty;
StringWriter xmlWriter = new StringWriter();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(xmlWriter, obj);
return xmlWriter.ToString();
}
public static T DeserializeFromXml<T>(string xml)
{
if (xml == string.Empty)
return default(T);
T obj;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
StringReader xmlReader = new StringReader(xml);
obj = (T)xmlSerializer.Deserialize(xmlReader);
return obj;
}
SerializedXml以:
开头<?xml version="1.0" encoding="utf-16"?>
<MyCustomClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
这是我第一次使用序列化,我想知道我的代码出了什么问题。
答案 0 :(得分:1)
顺便说一句,你的代码周围需要using
个阻止:
using (StringReader reader = new StringReader(xml))
{
obj = (T)xmlSerializer.Deserialize(reader);
}
答案 1 :(得分:1)
不幸的是,XmlSerialization异常是一块废话。
您通常需要深入研究无数级别的内部异常以获得真正的错误。
答案 2 :(得分:1)
对不起,我刚刚意识到我的问题是愚蠢= /
我正在序列化该类,但只尝试反序列化ObservableCollection。一旦我将其更改为序列化/解除正确的对象,它就会很好用,尽管我感谢您提供关于using
块的提示