Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Десериализация из XmlNode 
V
    Опции темы
mihryak
Дата 10.6.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Есть Xml-представление некого класса (XmlNode). Как можно с помощью XmlSerializer получить соответствующий экземпляр этого класса?
Пробовал колдовать с XmlWriter/XmlReader, получать строковое представление XmlNode, через Encoding пребразовывать к byte[], складывать эти байты в MemoryStream и подсовывать полученный поток XmlSerializer'у.
Самое большое достижение - ошибка о некорректном Xml-документе в разных позициях (0,0; 0,20 и т.д.) smile
Ручной парсер в данному случае писать не хотелось бы, т.к. класс довольно сложный и иерархический без ограничений на вложенность, со сложным наследованием. К тому же, время от времени добаляются/убраются новые поля, так что придётся ещё не забывать измениять парсер.
Рефлексия могла бы помочь, но, по сути, XmlSerializer именно так и работает, так что придётся изобретать велосипед.
Итак, вопрос smile Можно ли (и если "да" - то как), имея XmlNode, создать класс, используя XmlSerializer?
PM MAIL ICQ   Вверх
Exception
Дата 11.6.2007, 01:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Код
MyObject obj = serializer.Deserialize (new XmlNodeReader (node)) as MyObject;

Это было нетрудно... (с)
PM   Вверх
mihryak
Дата 11.6.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



как-то я упустил XmlNodeReader, да и у гугла по-другому спрашивал  smile 
спасибо smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.