[XML, .NET] Переопределение атрибутов сериализации
аттрибуты менять никак, но можно поддержать IXmlSerializable, и установленные атрибуты интерпретировать самому как хочется
А я бы вообще сделал свою сериализацию. Конечно, это может быть займет больше времени, но темм не менее придает тебе большую гибкость.
просто у меня уже есть тупой навороченный сериализатор. и не хочется ваять еще один такой же, который будет незначительно (но принципиально) отличаться от существующего.
Может быть, попробовать изменить требования?
Они совсем не выглядят критическими.
Они совсем не выглядят критическими.
про какие требования ты говоришь?
Мне нужен сериализатор, но такой, чтобы не было сериализации пустых элементов. И все. То есть нужно как-то контролировать, что можно сериализовать,а что нет. Но не заранее, а в процессе выполнения.
При этом уже есть сериализатор, который формирует xml по иерархии классов. Хочется как-то соптимизировать
его
Мне нужен сериализатор, но такой, чтобы не было сериализации пустых элементов. И все. То есть нужно как-то контролировать, что можно сериализовать,а что нет. Но не заранее, а в процессе выполнения.
При этом уже есть сериализатор, который формирует xml по иерархии классов. Хочется как-то соптимизировать
егокакой объем xml-я планируется?
сериализовать надо find-dialog
с очень большим числом параметров, которые уместились в хитрой иерархии классов
с очень большим числом параметров, которые уместились в хитрой иерархии классовтак какой объем результирующего xml-я? 100 байт? метр? 100 мб?
про какие требования ты говоришь?
Забей на требования "чтобы не было сериализации пустых элементов".
Чем мешают эти пустые элементы?
это самое главное требование, ради которого была поставлена задача 

существующий сериализатор генерит файл объемом в 3К
а можно gzip использовать?
зачем? 

ну тебя же напрягает размер файла
ае! 512-ое сообщение 8-)
ае! 512-ое сообщение 8-)
меня не напрягает размер файла.
меня напрягают пустые элементы
меня напрягают пустые элементы
Раз у тебя уже есть серилизатор, то что мешает изменить его, чтобы он работал как ты хочешь?
Это должно чуть ли не одной строчкой меняться (ведь в нем точно есть проверка на то, пустой элемент или нет; а если нет - как раз ее и надо добавить).
Это должно чуть ли не одной строчкой меняться (ведь в нем точно есть проверка на то, пустой элемент или нет; а если нет - как раз ее и надо добавить).
нет. не в этом дело. есть класс-оболочка, который стандартным сериализатором сериализуется.
проблема пустых значений, кажется, решена атрибутом [XmlElement(IsNullable = false)]
короче, проблема видимо решена
проблема пустых значений, кажется, решена атрибутом [XmlElement(IsNullable = false)]
короче, проблема видимо решена

существующий сериализатор генерит файл объемом в 3Кна таком объеме, можно как вариант, результирующий xml-ник патчить, вместо изменения сериалайзера.
Оставить комментарий
ruben-69
Есть иерархическая структура. Ее необходимо сериализовать. Но не просто скинуть все данные, а сериализовывать только те, которые имеют не "пустые" значения. ("Пустые" значения определены для каждого поля/свойства класса. Пример: 0, None, string.empty)Идея такая, что надо как-то менять атрибуты, контролирующие сериализацию. То есть возможно ли в момент выполнения где-то проставить, например, [XmlIgnoreAttribute].
Читабельного материала пока найти не удалось
Пытаюсь осилить XmlAttributeOverrides, но пока не очень понятно
Вопрос: как менять атрибуты во время выполнения программы?