反序列化时XmlSerialization引发错误?

时间:2010-08-18 19:54:27

标签: c# xml-serialization serialization

我正在尝试使用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">

这是我第一次使用序列化,我想知道我的代码出了什么问题。

3 个答案:

答案 0 :(得分:1)

顺便说一句,你的代码周围需要using个阻止:

using (StringReader reader = new StringReader(xml))
{
    obj = (T)xmlSerializer.Deserialize(reader);
}

答案 1 :(得分:1)

不幸的是,XmlSerialization异常是一块废话。

您通常需要深入研究无数级别的内部异常以获得真正的错误。

答案 2 :(得分:1)

对不起,我刚刚意识到我的问题是愚蠢= /

我正在序列化该类,但只尝试反序列化ObservableCollection。一旦我将其更改为序列化/解除正确的对象,它就会很好用,尽管我感谢您提供关于using块的提示