XmlSerialize espaces blancs

Résolu
alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 - 21 mars 2007 à 19:24
alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 - 25 mars 2007 à 14:55
Bonjour,

Voilà mon problème : j'essaie de sauvegarder une classe en xml via les methode Serialize et Desserialize de la classe XmlSerializer.
Je n'ai pas eu de problème jusque là... sauf que voilà, un petit filou a essayer de donner à une des variables de ma classe la valeur " " (espace).
Pour l'encodage, tout se passe bien, j'ai une ligne du type : <MaVariable> </MaVariable> dans mon fichier xml.
Mais dès que je veux déserialiser ma classe, il me supprime mon espace...

J'ai essayé, à des fin de test le programme suivant :
private void Form1_Load(object sender, EventArgs e)
        {
            ess es = new ess();

            System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(es.GetType());
            System.IO.FileStream stw = new System.IO.FileStream("d:\\essaivide.xml", System.IO.FileMode.Create);
            xs.Serialize(stw, es);
            stw.Close();

            System.IO.FileStream fs = new System.IO.FileStream("d:\\essaivide.xml",System.IO.FileMode.Open);

            es = (ess)xs.Deserialize(fs);
            fs.Close();

            MessageBox.Show("-" + es.p + "--" + es.q + "--" + es.r + "-");
        }

        public class ess
        {
            public string p = "a";
            public string q = "  b  ";
            public string r = "  ";
        }

Qui me revoie : -a--  b  ---

Où est mon erreur ?
Merci d'avance pour vos idées...

AlicVB
A voir également:

2 réponses

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
24 mars 2007 à 18:13
Salut,

A la lecture sert toi de XmlReader.Create, pas de FileStream.
A voir : XmlReaderSettings et plus particulièrement XmlReaderSettings.IgnoreWhitespace.

/*
coq
MVP Visual C#
CoqBlog
*/
3
alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
25 mars 2007 à 14:55
Genial...

Merci beaucoup !

AlicVB

Note : voici mon code d'essai "modifié" :
        private void Form1_Load(object sender, EventArgs e)
        {
            ess es = new ess();

            System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(es.GetType());
            System.IO.FileStream stw = new System.IO.FileStream("d:\\essaivide.xml", System.IO.FileMode.Create);
            xs.Serialize(stw, es);
            stw.Close();

            System.Xml.XmlReader xrr = System.Xml.XmlReader.Create("d:\\essaivide.xml");
            es = (ess)xs.Deserialize(xrr);

            MessageBox.Show("-" + es.p + "--" + es.q + "--" + es.r + "-");
        }

        public class ess
        {
            public string p = "a";
            public string q = "  b  ";
            public string r = "  ";
        }
0