XmlSerialize espaces blancs

[Résolu]
Signaler
Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007
-
Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007
-
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

2 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
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
*/
Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007

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 = "  ";
        }