Bonjours j'aimerai mettre en place la serialisation d'une liste d objet en xml mais lorsque j'écrit dans mon fichier xml j'ai cette erreur :
je ne voit pas d'ou peux provenir mon erreur.Erreur lors de la génération du document XML.
Voici le code que j'utilise :
classe Personne
classe Adresse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
38
39 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; namespace Serialisation.Data { public class Personne { [XmlAttribute("nom")] public string Nom { get; set; } [XmlAttribute("prenom")] public string Prenom { get; set; } [XmlAttribute("age")] public int Age { get; set; } [XmlElement("adresse")] public Adresse Adresse { get; set; } public Personne(string nom, string prenom, int age, Adresse adresse) { Nom = nom; Prenom = prenom; Age = age; Adresse = adresse; } public Personne() { } public override string ToString() { return string.Format("Nom : {0} Prénom : {1} Age : {2}\n{3}",Nom,Prenom,Age,Adresse.ToString()); } } }
classe ListePersonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
38 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; namespace Serialisation.Data { public class Adresse { [XmlElement("numeroMaison")] public int NumeroMaison { get; set; } [XmlElement("rue")] public string Rue { get; set; } [XmlElement("codePostal")] public int CodePostal { get; set; } [XmlElement("ville")] public string Ville { get; set; } public Adresse(int numeroMaison, string rue, int codePostal, string ville) { NumeroMaison = numeroMaison; Rue = rue; CodePostal = codePostal; Ville = ville; } public Adresse() { } public override string ToString() { return string.Format("Adresse : {0}, {1}\nVille : {2} {3}",Rue,NumeroMaison,CodePostal,Ville); } } }
classe SerialiserPersonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; namespace Serialisation.Data { public class ListePersonne { [XmlArray("listePersonne")] public List<Personne> ListPersonne { get; set; } public ListePersonne() { ListPersonne = new List<Personne>(); } } }
EDIT : j'ai l'impression que le problème vient du lien d'agrégation entre Personne et Adresse mais je ne voit pas comment résoudre cela ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; using System.Configuration; using System.IO; namespace Serialisation.Data { public class SerialiserPersonneXml { public static void Serialiser(List<Personne> liste) { string fichierXml = ConfigurationManager.AppSettings["fichierXml"]; XmlSerializer ecrire = new XmlSerializer(typeof(ListePersonne)); using(StreamWriter flux = new StreamWriter(fichierXml)) { ecrire.Serialize(flux, liste); } } } }
Partager