Программирование - это просто
Advertisement
Главная arrow Уроки C# arrow Работа с XML в C# (платный раздел) arrow Работа с XML в C#. Урок 1. Подводные камни XML-сериализации.
06.10.2022 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Работа с XML в C#. Урок 1. Подводные камни XML-сериализации. Печать E-mail
Автор megabax   
21.04.2013 г.
Структура программы на примере простейшей программы

  Работа с XML в C#. Урок 1. Подводные камни XML-сериализации.

 

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Для начала я расскажу, что же меня подтолкнуло на написание данного цикла статей. И так, сижу я как то за компьютером, пишу нейросеть (см. так же создаем биржевого робота, где описывается в том числе и эта нейросеть). Эта нейросеть у меня сохраняется в бинарном формате, очень простой конструкцией:

 

        private void saveSetToolStripMenuItem_Click(object sender, EventArgs e)

        {

            saveFileDialog1.Title = "Сохранение набора...";

            saveFileDialog1.Filter = "Файлы наборов нейросетей|*.nng|Все файлы|*.*";

 

           

...

 

Ну и такая же простая конструкция для чтения нейросети из файла:

 

        private void openSetToolStripMenuItem_Click(object sender, EventArgs e)

        {

            openFileDialog1.Title = "Открыть набор...";

            openFileDialog1.Filter = "Файлы наборов нейросетей|*.nng|Все файлы|*.*";

 

... 

 

И все это отлично работает, не смотря на сложность структуры самой нейронной сети, где класс на классе сидит и классом погоняет :) Казалось, бы, живи да радуйся, "работает - не трогай". Да, действительно, не было бы печали, если бы я не захотел дополнительно сделать еще и XML-сериализацию. А почему же я вдруг решил ее сделать? Мало мне что ли бинарной нормально работающей сериализации? В том то и дело, что бинарная сериализация, при всех своих многочисленных достоинствах имеет один недостаток, который никуда мне не уперся до тех пор, пока я не решил оптимизировать структуру программы. В частности, некоторые классы объединить в отдельную dll-ку. Что бы можно было использовать их в двух разных программах. Например, в одной редактируются нейросети, в другой они работают, допустим, торгуют на бирже, или распознают картинки. Либо, например, созданные в конструкторе нейронные сети можно было бы использовать для экспертной системы, для интеллектуальных игр, и для много другого. Тут только одно ограничение - фантазия программиста.

В общем, как только я попытался сохранить нейросеть в XML...

 

...

 

... Ничего не работало, программа вылетала в исключение. В ходе отладки некоторые из исключений мне удалось устранить. Вот одно из этих страшных сообщение:

 

Работа с XML в C#. Урок 1. Подводные камни XML-сериализации.

 

Один из методов отглючивания таких ситуаций...

 

...


Поспрашивал на форумах. В итоге меня послали по ссылке: http://stackoverflow.com/questions/2483268/linkedlist-cannot-be-serialised

Там, правда, написано по английский. Ну что-ж, попробуем перевести...

 

Вот мои классы http://pastebin.com/3dc5Vb1t

Когда я пытаюсь запустить:

BookStore b = new BookStore();
b.LoadFromXML(Server.MapPath("list.xml"));
Label1.Text = b.ToString();

Я получаю следующую ошибку...

...

 

...

 

....Вот собственно, после всех этих злоключений, я и решил более подробно изучить XML-сериализацию, а потом поделиться своими знаниями с вами, дорогие читатели. В рамках первого урока я наглядно описал, какие могут быть подводные камни и сохранении своих классов в XML, и как с некоторыми из них можно бороться. Со следующего урока мы начнем изучать XML-сериализацию с самого начала.
 

 

 

 

Последнее обновление ( 21.04.2013 г. )
 
« След.
 
© 2022 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги