Tutoriel : La sérialisation XML avec .NET
Par Thomas Levesque
Le 2009-02-17 16:17:13, par tomlev, Rédacteur/Modérateur
Cette discussion est consacrée à l'article intitulé La sérialisation XML avec .NET. Vous pouvez y poster vos commentaires concernant l'article.
Synopsis :
Synopsis :
Ce tutoriel explique comment sérialiser et désérialiser des objets en XML à l'aide des fonctionnalités du .NET Framework. On verra notamment comment contrôler très finement le schéma des documents XML générés par la sérialisation.
-
zax-tfhMembre avertiExcellent tuto !
pdf aussitot enregistré dans mes documents
Merci !le 26/02/2009 à 13:02 -
rosterMembre avertiMerci bien!le 26/02/2009 à 16:26
-
B.AFMembre chevronné+1 !le 01/03/2009 à 17:12
-
AJemniMembre actifFranchement ce Tuto ma beaucoup aider et il m’a clarifié beaucoup d’ambiguité, mais en contre partie, la gestion d’héritage n’était pas trop claire pour moi.
+1le 01/04/2009 à 19:58 -
tomlevRédacteur/ModérateurEn fait, c'est un problème qui n'est pas forcément évident à comprendre si on ne l'a pas déjà rencontré sur un cas concret... En tous cas, si tu veux des éclaircissements là-dessus, n'hésite pas à demanderle 02/04/2009 à 0:36
-
sylvain114dMembre du ClubTrès bon article.
Une petite remarque cependant à propos de l'attribut Flags sur l'énumération :
Remarquez l'attribut Flags sur l'énumération : il indique que les valeurs peuvent être combinées par un OU binaire (opérateur |). Cet attribut n'est habituellement pas obligatoire, mais il l'est dès lors qu'on veut sérialiser cette énumération en XML. Si l'attribut Flags n'est pas présent, une exception sera levée si on cherche à sérialiser une valeur qui ne fait pas explicitement partie de l'énumération.
J'ai fait mes tests en .Net 2.0. Peut-être cela est-il différent pour les nouvelles versions mais cela m'étonnerais.le 06/08/2009 à 16:31 -
tomlevRédacteur/ModérateurBizarre... peux-tu montrer le code qui pose problème ?
(par contre je pars en WE donc je ne pourrai pas regarder avant dimanche soir)le 06/08/2009 à 17:00 -
sylvain114dMembre du ClubJ'ai une exception lors de la sérialisation :
Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37[Flags] public enum AddressType { None = 0, Ship = 1, Bill = 2 } public class Address { [XmlElement("TypeAdresse")] public AddressType Type; public string AdrLine1; } class XMLSerialTest { public static void Test() { Address a1 = new Address(); a1.Type = (AddressType)10; a1.AdrLine1 = "Hello World!"; XmlSerializer xs = new XmlSerializer(typeof(Address)); using (StreamWriter wr = new StreamWriter("c:\\test.xml")) { xs.Serialize(wr, a1); } using (StreamReader rd = new StreamReader("c:\\test.xml")) { Address a2 = xs.Deserialize(rd) as Address; Console.WriteLine("Type : " + a2.Type); Console.WriteLine("Line1 : " + a2.AdrLine1); } } }
le 06/08/2009 à 18:46 -
tomlevRédacteur/ModérateurLe problème est ici :
Code : a1.Type = (AddressType)10;
le 10/08/2009 à 0:29 -
sylvain114dMembre du ClubOK merci.
Donc la sérialisation XML d'une enum avec l'attribut Flags fonctionne de façon intuitive et cohérente avec le reste du framework.
Dans ton article j'avais l'impression que l'attribut Flags avait un comportement spécial lors de sérialisation XML.
Les phrases :
Cet attribut n'est habituellement pas obligatoire, mais il l'est dès lors qu'on veut sérialiser cette énumération en XML.
Si l'attribut Flags n'est pas présent, une exception sera levée si on cherche à sérialiser une valeur qui ne fait pas explicitement partie de l'énumération.
le 10/08/2009 à 12:05