Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化时引发XmlSerialization错误?_C#_Xml Serialization_Serialization - Fatal编程技术网

C# 反序列化时引发XmlSerialization错误?

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

我试图使用xml序列化将对象序列化到数据库中,但是在反序列化它时出现错误

错误为XML文档(2,2)中有一个错误,内部异常为
“未预期。”

我用来序列化的代码是:

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继承而来)。在进行任何其他调试时,我都会记住这一点,谢谢