Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > XMLSerializer


Автор: Alfmaster 15.6.2009, 16:37
Возможно ли при сериализации объекта через XMLSerializer не заменять текст в целевом файле, а добавлять сериализуемый объект к уже существующим в файл?

Автор: mihryak 15.6.2009, 17:59
можешь получить файловый поток на добавление через метод File.Open(path, FileMode.Append), только результат тебя не порадует - десериализовать не получится, т.к. при каждой сериализации будет создаваться нода с хмл-декларацией и рутовая нода
или поднимай имеющийся контент, или сериализуй по-другому

Автор: Alfmaster 16.6.2009, 01:40
Я думал написать функцию, которая будет читать их файла XML, добавлять в него новые элементы и вновь сохранять!

Автор: mihryak 16.6.2009, 01:55
Цитата(Alfmaster @  16.6.2009,  02:40 Найти цитируемый пост)
Я думал написать функцию, которая будет читать их файла XML, добавлять в него новые элементы и вновь сохранять! 

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

Автор: Bladerender 16.6.2009, 09:24
Вообще-то розсериализировать получится. Если не ошбаюсь, там стримридер потом по особенному вызывается и он уже пробегаясь но корневым нодам файла смотрит на них как на независимые обьекты. Поройте в этом направлении.

Автор: Veitmen 16.6.2009, 10:43
Для решения поставленной задачи следует использовать следующий алгоритм:

1. Десериализуешь коллекцию объектов из файла.
2. Добавляешь к коллекции объектов еще один или несколько объектов.
3. Сериализуешь коллекцию.

Цитата(Bladerender @  16.6.2009,  09:24 Найти цитируемый пост)
Вообще-то розсериализировать получится.

Что вы имели ввиду?

Автор: mihryak 16.6.2009, 11:01
Цитата(Bladerender @  16.6.2009,  10:24 Найти цитируемый пост)
Если не ошбаюсь, там стримридер потом по особенному вызывается и он уже пробегаясь но корневым нодам файла смотрит на них как на независимые обьекты.

хм... это как?
Цитата(Veitmen @  16.6.2009,  11:43 Найти цитируемый пост)
Что вы имели ввиду? 

десериализацию, из контекста вполне следует

Автор: Alfmaster 16.6.2009, 11:55
Цитата

1. Десериализуешь коллекцию объектов из файла.
2. Добавляешь к коллекции объектов еще один или несколько объектов.
3. Сериализуешь коллекцию.


Об этом тоже думал. Не уверен, правда, что это будет в достаточное мере производительно... Хотя, классы  у меня будут не большими, с несколькими строковыми полями...

Автор: mihryak 16.6.2009, 11:57
Цитата(Alfmaster @  16.6.2009,  12:55 Найти цитируемый пост)
Об этом тоже думал. Не уверен, правда, что это будет в достаточное мере производительно... Хотя, классы  у меня будут не большими, с несколькими строковыми полями... 

описал бы ты задачу, возможно, вообще не тот путь выбрал

Автор: Alfmaster 17.6.2009, 12:44
Мне нужно хранить информацию о всех альбомах и песнях, которые пользователь сам добавляет в библиотеку!

Автор: Skynin 17.6.2009, 13:30
Тогда XML - неверный подход.

http://ru.wikipedia.org/wiki/Microsoft_SQL_Server_Compact_Edition

Автор: mihryak 17.6.2009, 13:51
Цитата(Skynin @  17.6.2009,  14:30 Найти цитируемый пост)
Тогда XML - неверный подход.

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

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

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

Автор: Alfmaster 17.6.2009, 14:12
Я хочу сделать приложение наподобие айтюнс, чтобы и обложки можно было качать и всякую другую ерунду! щас посмотрю, че там можно сделать с этим SQL сервером компактным...

Автор: Alfmaster 17.6.2009, 14:56
Что-то я вроде все установил, что нужно но в SQL server не появилась возможность подключиться к SQL Server Compact Edition

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)