XmlSerialize espaces blancs [Résolu]

Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007
- - Dernière réponse : 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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
74
3
Merci
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
*/

Dire « Merci » 3

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

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

Commenter la réponse de cs_coq
Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007
0
Merci
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 = "  ";
        }
Commenter la réponse de alicvb