XmlSerialization

Résolu
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 - 13 oct. 2008 à 18:24
billou_13 Messages postés 860 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!!!!!!!!!

11 réponses

cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
13 oct. 2008 à 19:18
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!!!!!!!!!
3
xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
13 oct. 2008 à 22:30
Salut,
C'est bon à savoir.
A+
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 oct. 2008 à 23:12
De rien, un lien sur le poste pourrait être utile...

<hr />
-My Blog-
0
cs_thebigboss Messages postés 216 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 12 avril 2017 2
14 oct. 2008 à 09:02
Il y'a le lien sur le post (si tu cliques sur Bidou) ;o)

A+

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

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
14 oct. 2008 à 09:49
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 oct. 2008 à 10:43
thebigboss> Ok, j'avais pas vu ;-)
billou> Me semble bien que oui. Un rapide teste semble le confirmer aussi...

<hr />
-My Blog-
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
14 oct. 2008 à 10:46
Merci beaucoup pour la précision Bidou !
Par contre, je ne vois pas comme tu as pu tester pour le confirmer ^^


Billou_13
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 oct. 2008 à 10:56
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-
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
14 oct. 2008 à 11:06
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 oct. 2008 à 11:14
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-
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
14 oct. 2008 à 11:18
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
0
Rejoignez-nous