Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
1

Сериализация и десериализация в одном из методов не работает как положено

24.07.2014, 19:42. Показов 1085. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
в двух классах есть методы сериализации и десериализации, в одном все работает нормально, во втором нет, подскажите в чем проблема
в первом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public void Serialize(List<Clients> buf)
        {
            string path = @"data/clients.xml";
            XmlSerializer writer = new XmlSerializer(typeof (List<Clients>));
            try
            {
                Stream file;
                if (File.Exists(path))
                {
                    File.Delete(path);
                    file = File.Create(path);
                }
                else file = File.OpenWrite(path);
                writer.Serialize(file, buf);
            }
            catch (Exception e)
            {
                MessageBox.Show(@"Exception - " + e.Message);
            }
        }
        //метод считывает информацию из xml файла и возвращает ее из метода по ссылке
        public void Deserialize(out List<Clients> buf)
        {
            string path = @"data/clients.xml";
            try
            {
                XmlSerializer reader = new XmlSerializer(typeof(List<Clients>));
                using (Stream file = File.OpenRead(path))
                    buf = (List<Clients>) reader.Deserialize(file);
            }
            catch (Exception e)
            {
                MessageBox.Show(@"Exception - " + e.Message);
                buf = null;
            }
        }

в втором
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public void Serialize(List<List<Orders>> buf)
        {
            string path = @"data/orders.xml";
            XmlSerializer writer = new XmlSerializer(typeof(List<List<Orders>>));
            try
            {
                Stream file;
                if (File.Exists(path))
                {
                    File.Delete(path);
                    file = File.Create(path);
                }
                else file = File.OpenWrite(path);
                writer.Serialize(file, buf);
            }
            catch (Exception e)
            {
                MessageBox.Show(@"Exception - " + e.Message);
            }
        }
        //метод считывает информацию из xml файла и возвращает ее из метода по ссылке
        public void Deserialize(out List<List<Orders>> buf)
        {
            string path = @"data/clients.xml";
            try
            {
                XmlSerializer reader = new XmlSerializer(typeof(List<Orders>));
                using (Stream file = File.OpenRead(path))
                    buf = (List<List<Orders>>)reader.Deserialize(file);
            }
            catch (Exception e)
            {
                MessageBox.Show(@"Exception - " + e.Message);
                buf = null;
            }
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2014, 19:42
Ответы с готовыми решениями:

Десериализация и сериализация в одном потоке
Добрый день, сразу попрошу не кидаться помидорами, ибо я даже не программист и не новичок, а только...

Сериализация работает, десериализация - нет
Здравстуйте. Довольно комичная ситуация возникла. Делаю сериализацию листа в файл, а десериализация...

Сериализация работает(вроде), а десериализация - нет
Всем привет. Я написал некую программу на Java, при первом запуске которой с консоли вводятся...

Десериализация работает на одном комьютере и не работает на другом
Провожу десериализацию из файла - на компе разработки все нормально, на компе пользователя -...

8
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
24.07.2014, 20:25 2
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
в одном все работает нормально, во втором нет
А что именно не работает? Ошибка есть какая-нибудь?
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.07.2014, 21:04  [ТС] 3
insite2012, да, вот такая
Ошибка возникает, когда пытаемся десериализовать второй файл
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
24.07.2014, 21:26 4
Fene4ka_, так ошибка вам все и говорит. У вас документ некорректный, ятд.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.07.2014, 21:56  [ТС] 5
insite2012, почему же тогда в первом случае все работает ?
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
24.07.2014, 22:09 6
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
почему же тогда в первом случае все работает ?
Fene4ka_, так я почем знаю. Я не вижу ваших xml файлов, не вижу классов из которых они созданы, откуда я могу это знать. Но ошибка вам ясно говорит - документ некорректный.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.07.2014, 23:44  [ТС] 7
insite2012, вот проект, гляньте плз
Вложения
Тип файла: rar FaVWork.rar (82.0 Кб, 8 просмотров)
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
25.07.2014, 00:59 8
Лучший ответ Сообщение было отмечено Fene4ka_ как решение

Решение

Fene4ka_,
Эх копипаста, у вас, имя файла в Orders.Deserialize не верное.
И я не совсем уверен что такая
Код
<ArrayOfOrders><Orders></Orders></ArrayOfOrders>
соответствует List<Orders>.
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
25.07.2014, 01:04  [ТС] 9
XRoy, исправил, ошибка осталась

Добавлено через 53 секунды
нашел еще одну, исправил, работает, спс
0
25.07.2014, 01:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2014, 01:04
Помогаю со студенческими работами здесь

Некорректно работает сериализация класса в одном из проектов
воообщем проблема следующая: сериализованый класс в части XML кода выдает &lt;LibraryElement...

Сериализация/десериализация Xml, как сделать чтобы изменения вступили в силу
Возникла проблема: сохраняю датасет в xml файл-успешно сохранен, изменяю бд, считываю этот файл,...

SaveFileDialog не работает как положено
Добрый день уважаемые знатоки, Имеется оконное приложение. При нажатии на одну из кнопок на...

Сериализация и десериализация
Приветы! Есть клиент-серверное приложение (я подумал, что так будет удобнее всего работать) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru