SAGA 4: sérialisation XML
Par amethyste le Aoû 24, 2008 | Dans focus | Réagir »
Cette semaine nous allons rester un peu avec les collections avant d'aborder la sérialisation des énumérations et examiner un dernier cas de figure:
List<Pays> liste = new List<Pays>(); liste.Add(new Pays { Capitale = "Paris", Nom = "France" }); liste.Add(new Pays { Capitale = "Bruxelle", Nom = "Belgique" });
Un premier essai donne ceci après le nettoyage d'usage:
<?xml version="1.0" encoding="utf-8"?> <ArrayOfPays> <Pays capitale="Paris"> <nom>France</nom> </Pays> <Pays capitale="Bruxelles"> <nom>Belgique</nom> </Pays> </ArrayOfPays>
Peut-on remplacer le ArrayOfPays?
Nous l'avions fait précédemment à l'aide des attributs XmlArrayAttribute et XmlEllementAttibute qui ne s'appliquent pas à des déclarations de classe. C'est le rôle de XmlRootAttribute.
Dans notre cas il est nécessaire de définir une nouvelle classe et d'y appliquer l'attribut XmlRoot.
[DebuggerDisplay("{Count}")] [XmlRoot("pays")] public sealed class PaysCollection : List<Pays> { }
Cette fois on obtient:
<pays> <Pays capitale="Paris"> <nom>France</nom> </Pays> <Pays capitale="Bruxelles"> <nom>Belgique</nom> </Pays> </pays>
Notons que les collections, du point de vue de la sérialisation, ne sont pas très différentes des Array.
Terminons sur un dernier cas de figure: la sérialisation des énumérations.
On pourrait modéliser l'appartenance à un continent via une énumération:
public enum NomContinent { Europe, Asie, AmeriqueNord, AmeriqueSud, Oceanie, Afrique, Antartique }
Et un nouveau membre de la classe Pays:
public NomContinent Continent;
Telle quel une sérialisation donne dans le cas de la précédente collection:
<pays> <Pays capitale="Paris"> <Continent>Europe</Continent> <nom>France</nom> </Pays> <Pays capitale="Bruxelle"> <Continent>Europe</Continent> <nom>Belgique</nom> </Pays> </pays>
Tout comme pour un autre membre on peut renommer la sortie standard à l'aide de l'attribut XmlEnumAttribute:
public enum NomContinent { [XmlEnum("europe")] Europe, [XmlEnum("asie")] Asie, [XmlEnum("amérique du nord")] AmeriqueNord, [XmlEnum("amérique du sud")] AmeriqueSud, [XmlEnum("océanie")] Oceanie, [XmlEnum("afrique")] Afrique, [XmlEnum("antartique")] Antartique }
Notes d'ailleurs
Il y a quelques temps Michel Fugain s'est laissé aller envers les chanteurs modernes qui ne connaissent pas leur métier, n'ont aucune culture et s'imaginent tout connaître et terminât par cette diatribe: "de notre temps nous écoutions des merveilles".
Je laisse de côté ce débat qui avait déjà cours du temps de ma jeunesse pour vous proposer d'écouter une chanson de mon adolescence, chantée par un chanteur de celle de mes parents avec une chanteuse des années de l'adolescence des miens.
Je trouve tout de même que le talent ça pourrait ressembler à ça:
Aucun commentaire pour le moment
Laisser un commentaire
| « SAGA 5: sérialisation XML | SAGA 3: Sérialisation XML » |