C# 反序列化时引发XmlSerialization错误?
我试图使用xml序列化将对象序列化到数据库中,但是在反序列化它时出现错误 错误为XML文档(2,2)中有一个错误,内部异常为C# 反序列化时引发XmlSerialization错误?,c#,xml-serialization,serialization,C#,Xml Serialization,Serialization,我试图使用xml序列化将对象序列化到数据库中,但是在反序列化它时出现错误 错误为XML文档(2,2)中有一个错误,内部异常为“未预期。” 我用来序列化的代码是: public static string SerializeToXml<T>(T obj) { if (obj == null) return string.Empty; StringWriter xmlWriter = new StringWriter(); XmlSerializ
“未预期。”
我用来序列化的代码是:
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;
}
公共静态字符串序列化XML(T obj)
{
if(obj==null)
返回字符串。空;
StringWriter xmlWriter=新的StringWriter();
XmlSerializer XmlSerializer=新的XmlSerializer(typeof(T));
serializer.Serialize(xmlWriter,obj);
返回xmlWriter.ToString();
}
公共静态T反序列化FromXML(字符串xml)
{
if(xml==string.Empty)
返回默认值(T);
T-obj;
XmlSerializer XmlSerializer=新的XmlSerializer(typeof(T));
StringReader xmlReader=新的StringReader(xml);
obj=(T)xmlSerializer.Deserialize(xmlReader);
返回obj;
}
序列化DXML以以下内容开头:
<?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">
这是我第一次使用序列化,我想知道我的代码哪里出了问题。顺便说一句,您需要在代码周围使用
块:
using (StringReader reader = new StringReader(xml))
{
obj = (T)xmlSerializer.Deserialize(reader);
}
不幸的是,XmlSerialization异常是一堆废话
通常,您必须深入到无数级别的内部异常中才能找到真正的错误。对不起,我刚刚意识到我的问题是愚蠢的=/
我正在序列化该类,但只尝试反序列化ObservableCollection。一旦我将其改为序列化/反序列化正确的对象,它就非常有效,尽管我感谢您提供了使用
块的技巧,但通常xmlReader
和xmlWriter
将用于xmlReader
和xmlWriter
的实例,不是StringReader
和StringWriter
。要解决这个问题,我想我们需要看看MyCustomClass
的声明以及XML的其余部分。它告诉我,我不能创建抽象类XmlWriterMy的实例。我的等效代码工作得很好。你能序列化空类吗?然后添加一些属性。MyCustomClass代码相当长。。。它不包含除[Serializable]
之外的任何属性,它唯一的属性是CustomObjects的CustomObservableCollection(从基本ObservableCollection继承而来)。在进行任何其他调试时,我都会记住这一点,谢谢