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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Исключить поля по умолчанию из xml сериализации 
V
    Опции темы
gambit
Дата 14.11.2012, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Добрый день.

Есть объекты которые необходимо сериализовать в строку. Сериализую:

Код

XmlSerializer rqSer = new XmlSerializer(Root.GetType());
            using (MemoryStream stream = new MemoryStream())
            {
                using (StreamReader sReader = new StreamReader(stream))
                {
                    rqSer.Serialize(stream, Root);
                    sReader.BaseStream.Position = 0;
                    return sReader.ReadToEnd();
                }
            }


Все замечательно, но данный способ игнорит атрибут [DataMember(EmitDefaultValue = false)]

Можно пойти по пути:
Код

using (StringWriter result = new StringWriter())
             {
                 using (XmlWriter xmlWriter = XmlWriter.Create(result, settings))
                 {
                     new DataContractSerializer(Root.GetType(), listType).WriteObject(xmlWriter, Root);
                 }
                 return result.ToString();
             }

Но данный способ игнорит все атрибуты xml, например [XmlArrayItem(typeof(...), ElementName = "...")]

Подскажите, пожалуйста, некий аналог EmitDefaultValue для такой модели сериализации или какие ниб обходные пути. Спасибо.
PM MAIL ICQ Skype   Вверх
AVX
Дата 18.11.2012, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

Репутация: нет
Всего: 1



А тебе обязательно XmlSerializer? Может подойдёт json.net ?
PM MAIL   Вверх
gambit
Дата 19.11.2012, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Ну как в теме про xml можно предложить какую то левую библиотеку для json...
PM MAIL ICQ Skype   Вверх
gambit
Дата 19.11.2012, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Вопрос закрыт. Он решился с помощью поиска похожих тем внизу страницы и решился с помощью свойства:

Код

 [XmlIgnore]
        public bool ИмяСвойстваSpecified { get { return "условие сериализации" } }

PM MAIL ICQ Skype   Вверх
AVX
Дата 19.11.2012, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

Репутация: нет
Всего: 1



Цитата(gambit @  19.11.2012,  00:47 Найти цитируемый пост)
Ну как в теме про xml можно предложить какую то левую библиотеку для json... 

Ты же писал про 
Цитата(gambit @  14.11.2012,  13:14 Найти цитируемый пост)
Есть объекты которые необходимо сериализовать в строку.

так что уже не корректно, с этого и последовали выводы

Цитата(gambit @  19.11.2012,  09:57 Найти цитируемый пост)
Вопрос закрыт. Он решился с помощью поиска похожих тем внизу страницы и решился с помощью свойства:

код C#
1:
2:
 [XmlIgnore]
        public bool ИмяСвойстваSpecified { get { return "условие сериализации" } }


Не мог себе даже представить что кто-то не знал/нашёл этот атрибут  smile 
PM MAIL   Вверх
gambit
Дата 19.11.2012, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



При чем тут атрибут? Тут свойство флаг со специальным именем Specified. Этого да, я не знал.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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