C'est assez surprenant de voir que la classe XmlSerializer dispose de bon nombre de possibilités pour gérer finement un fichier XML mais qu'elle est totalement mésestimée... pas mal de monde pense qu'elle ne sert qu'à sérialiser ou dé-sérialiser un XML qui ne serra lisible que via .net.
Ceci est faut, faut!! et archi faux!.. enfin ce n'est pas ton sujet, pardon je m'égards.
Si l’on regarde bien le XmlSerializer et le namespace System.Xml.Serialization. Ils disposent d'attributs pouvant être ajoutés à une classe pour manager le comportement de l'objet lors de sa sérialisation.
Par exemple :
pour changer le nom d'un propriété de type énumération lors de sa sérialisation
<System.Xml.Serialization.XmlArrayItem("Menuitem")> Public Property Items() As ObservableCollection(Of MyMenuItem) End PropertyC#
[System.Xml.Serialization.XmlArrayItem("Menuitem")] public ObservableCollection<MyMenuItem> Items { }
Changer le nom d'un nœud (donc le nom de la classe sérialisée):
Vb<XmlRoot("Menuitem")> Public Class MyMenuItem End ClassC#
[XmlRoot("Menuitem")] public class MyMenuItem { }
Interdire la sérialisation d'une propriété
Vb<System.Xml.Serialization.XmlIgnore> Public Property ImageSource() As Image End PropertyC#
[System.Xml.Serialization.XmlIgnore] public ImageSource Image { }
Enfin ce ne sont que des exemples, il y encore bien d'autres choses qui sont possible et qui peuvent rendre service dans System.Xml.Serialization.
Pour plus d’information comme toujours cela se passe sur la MSDN.