XmlSerialization [Résolu]

Messages postés
216
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
12 avril 2017
- - Dernière réponse : billou_13
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
- 14 oct. 2008 à 11:18
Bonjour,

y'a un petit truc qui me rend fou:

j'ai une classe Personne que j'arrive a serializer (mais que je ne souhaite pas serializer).

Pour l'instant, et pour simplifier, ma classe Liste_Personnes ne contient qu'un ArrayList de Personnes.

J'ai cherché sur le forum et trouvé (et testé) un post de Bidou pour serializer un ArrayList:
            ArrayList myArrayL = new ArrayList ();
            myArrayL.Add(3);
            myArrayL.Add("salut");
            XmlSerializer MySerializer = newXmlSerializer(typeof(ArrayList));
            FileStream MyWriter=newFileStream(Application.StartupPath + @"\ArrayList.xml", FileMode.Create);
            MySerializer.Serialize(MyWriter, myArrayL);

Ce code fonctionne. Par contre si j'ajoute une Personne à myArrayL, j'ai une erreur.

Ma question est la suivante: Pourquoi si j'arrive a serializer une Personne et que j'arrive a serializer un ArrayList, pourquoi est-ce que je n'arrive pas à serializer un ArrayList contenant une Personne?

Merci d'avance.

Nico

A+

*******************************************
SharpDevelop est mon ami! CSharpFR.com aussi!!!!!!!!!
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
216
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
12 avril 2017
2
3
Merci
Merci Bidou:
En fouillant un peu plus sur le forum j'ai trouvé la solution, il me fallait remplacer la ligne:
XmlSerializer MySerializer = new XmlSerializer (typeof(ArrayList));

par:

XmlSerializer MySerializer = newXmlSerializer(typeof(ArrayList), new Type[] { typeof(Personne) });

A+

*******************************************
SharpDevelop est mon ami! CSharpFR.com aussi!!!!!!!!!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_thebigboss
Messages postés
357
Date d'inscription
jeudi 8 juin 2006
Statut
Membre
Dernière intervention
26 décembre 2011
3
0
Merci
Salut,
C'est bon à savoir.
A+
Commenter la réponse de xmox667
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
41
0
Merci
De rien, un lien sur le poste pourrait être utile...

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
216
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
12 avril 2017
2
0
Merci
Il y'a le lien sur le post (si tu cliques sur Bidou) ;o)

A+

*******************************************

SharpDevelop est mon ami! CSharpFR.com aussi!!!!!!!!!
Commenter la réponse de cs_thebigboss
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
15
0
Merci
Bonjour,

Pourrais-je ajouter une question à ceci ?
Le code:
"XmlSerializer serializer = new XmlSerializer(Type type, Type[] extraTypes);"
est-il équivalent à la mise en place de
"[XmlInclude(Type type)]" au dessus de la définition d'une classe qui contiendra une collection d'autres classes ?

Je parle ici d'équivalence pas de remplacement. Car je comprends bien que dans l'exemple de la question, on ne peut pas mettre en place cette solution.

Merci par avance,


Billou_13
Commenter la réponse de billou_13
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
41
0
Merci
thebigboss> Ok, j'avais pas vu ;-)
billou> Me semble bien que oui. Un rapide teste semble le confirmer aussi...

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
15
0
Merci
Merci beaucoup pour la précision Bidou !
Par contre, je ne vois pas comme tu as pu tester pour le confirmer ^^


Billou_13
Commenter la réponse de billou_13
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
41
0
Merci
public








class





Program


{








public





static





void

Main(


string

[] args){



Test

al =


new





Test

();al.Add(



new





Classe

(2));al.Add(



new





Classe

(3));al.Add(



new





Classe

(4));



StringWriter

oWriter =


new





StringWriter

();



// XmlSerializer serializer = new XmlSerializer(typeof(Test), new Type[] { typeof(Classe) });








XmlSerializer

serializer =


new





XmlSerializer

(


typeof

(


Test

));serializer.Serialize(oWriter, al);



Console

.WriteLine(oWriter.ToString());}

}



//XmlInclude(typeof(Classe))]








public





class





Test

:


ArrayList


{


}


[





Serializable

()]



public





class





Classe


{








private





int

_x = 0;



private

Classe(){

}



public

Classe(


int

x){



this

._x = x;}



public





int

X{



get

{


return





this

._x; }



set

{


this

._x =


value

; }}

}












<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
15
0
Merci
Ok, je vois !

Mais, je pensais que tu m'aurais sorti le code interprété pour me montrer que c'était la même chose LOL (je croyais que tu avais fait comme ça pour le savoir ^^)

Mais soit dit en passant, je suis d'accord avec ton test ^^


Billou_13
Commenter la réponse de billou_13
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
41
0
Merci
Pas le temps (ni l'envie ^^) de me plonger dans du pseudo assembleur, surtout que je connais pas très bien l'IL....
Le teste de dessus ne prouve rien, ça conforte juste un souvenir ;-)

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
15
0
Merci
Ok.

Si je te connaissais pas, je te croirais pas alors ! (lol)
Mais t'as de la chance, je prend tes mots pour le saint graal ^^

Bonne journée et merci,


Billou_13
Commenter la réponse de billou_13