2010-08-18 3 views
2

Я пытаюсь сериализовать объект в базу данных с помощью сериализации xml, однако при десериализации я получаю сообщение об ошибке.Ошибка сортировки XmlSerialization при десериализации?

Ошибка Существует ошибка в документе 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"> 

Это мой первый опыт использования se риализация, и мне интересно, что я делаю что-то не так с моим кодом.

+0

В качестве отступления, как правило, 'xmlReader' и' xmlWriter' будут использоваться для экземпляров 'XmlReader' и 'XmlWriter', а не' StringReader' и 'StringWriter'. –

+0

Чтобы решить эту проблему, я думаю, нам нужно будет увидеть декларацию 'MyCustomClass', а также остальную часть XML. –

+0

Это говорит мне, что я не могу создать экземпляр абстрактного класса XmlWriter – Rachel

ответ

1

Я извиняюсь, я просто понял, что моя проблема была тупостью =/

я сериализация класса, но при попытке десериализации только ObservableCollection. Как только я изменил это на сериализацию/десериализацию правильного объекта, он отлично работает, хотя я благодарю вас за отзыв о using блоках

1

BTW, вам нужно using блоки вокруг вашего кода:

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

Спасибо, я добавлю, что – Rachel

1

К сожалению, исключения XmlSerialization кусок дерьма.

Обычно вам необходимо проснуться на бесчисленные уровни внутренних исключений, чтобы добраться до реальной ошибки.

+0

Я буду помнить об этом при выполнении любой другой отладки, спасибо – Rachel

Смежные вопросы