XmlSerializer, XmlAttributeOverrides и IXmlSerializible,
От: PlotNick.lj Узбекистан plotnick.livejournal.com
Дата: 30.06.09 05:24
Оценка:
Можно ли в XmlSerializer, засунуть такой XmlAttributeOverrides,
чтобы в нем не только имена полей допустим были изменены, но и значения чтобы подсовывались другие.

Я имею ввиду такую ситуацию. Есть у меня класс, который сериализуеться через XmlSerializer, но тут (вот досада) оказываеться,
что XmlSerializer хватает все доступные поля, в том числе и базового класса тоже, а мне эти поля (ну или некоторые из них) ну совсем нафик не срались.
Я конечно могу вручную управлять всем процессом сериализации, наследовав от IXmlSerializible, но там у меня не получаеться сериализовывать вложенные структуры иерархий. Хрен его знает как это делать, у меня никак не получаеться, потому что XmlReader и XmlWriter forward-only и я не могу найти примеров где сериализоывалось что-нибудь типа:

<Users>
 <User Name="Ivanov" Pasword="ivan">
   <Movies>
     <Movie Name="Showshank redeption"/>
     <Movie Name="Green mile"/>
   </Movies>
 </User> 
  <User Name="Petrov">
  </User>
  <User Name=Sidorov">
   <Movies> 
    <Movie Name="Djentelmeny udachy">
    </Movie>
    <Movie Name="Mimino"/>
   </Movies>
  </User>
  <User Kuznetsov />
</Users>


Есть выход — вместо того, чтобы использовать методы IXmlSerializible, использовать XmlAttributeOverrides, и указать тем атрибутам базового класса, которые нам не нужны XmlIgnore (базовый класс библиотечный, потому вариант прописать атрибуты для полей базового класса прямо в нем самом не канает).
Но в этом случае теряеться гибкость управления сериализацией. Допустим нельзя изменить значение элемента (хотя тип и имя) можно.
Для чего это может быть необходимым? Для того, чтобы к примеру криптить пароли, или запихивать в элемент, любое другое произвольное значение.

Видимо второй вариант не возможен, по крайней мере я так и не нашел.
А с первым вариантом я просто как-то туплю. Помогите а?
xml xmlserializer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.