IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problème sérialisation XML


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Par défaut Problème sérialisation XML
    Salut,

    lors de la mise à jour d'un objet précédemment sérialisé, la mise à jour du fichier xml écrase les données sans au préalable supprimer le texte précédent.
    Si une variable tient moins de place que l'ancienne, il reste donc des traces de l'ancienne version en bout de fichier. J'ai déjà rencontré ce problème...
    Par exemple

    Debut de fichier

    <Objet>
    ....
    </Objet>et>

    Fin de fichier

    Dans cet exemple une variable aurait perdu 3 caractères.

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Comment tu fais la sérialisation ?

  3. #3
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     using (System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.OpenOrCreate))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(Script));
                serializer.Serialize(fs, s);
            }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il faut remplacer System.IO.FileMode.OpenOrCreate par System.IO.FileMode.Create parce que ce dernier permet de créer le fichier s'il n'existe pas et s'il existe il est écrasé.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Par défaut
    j'avais mis Create sur des tests précédents et le résultat était le même.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mappy Voir le message
    j'avais mis Create sur des tests précédents et le résultat était le même.
    Alors là j'en suis pas sûr vu que ce n'est pas ce que dit la documentation MSDN sur ce point.

    Simple si ça ne marche toujours pas, la solution est de supprimer le fichier s'il existe avant de sérialiser. Dans ce cas ton code devient comme ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (System.IO.File.Exists(fileName)) System.IO.File.Delete(fileName);
    using (System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.OpenOrCreate))
    {
        XmlSerializer serializer = new XmlSerializer(typeof(Script));
        serializer.Serialize(fs, s);
    }

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Voici comment je créer mes fichiers XML si ça peut t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /// <summary>
            /// Créer un fichier XML à partir d'une liste
            /// </summary>
            /// <typeparam name="T">type de la liste</typeparam>
            /// <param name="liste">liste à sérialiser </param>
            /// <param name="chemin">chemin du fichier XML à créer</param>
            public static void CreerFichierXML<T>(List<T> liste, string chemin)
            {
     
                XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
                using (TextWriter writer = new StreamWriter(chemin))
                {
                    serializer.Serialize(writer, liste);
                }
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de sérialisation XML
    Par fcolinet dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/08/2012, 16h25
  2. Problème de sérialisation XML
    Par loicounet dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 04/09/2009, 09h52
  3. problème de sérialisation xml
    Par Pol63 dans le forum VB.NET
    Réponses: 0
    Dernier message: 26/02/2009, 17h32
  4. Problème de sérialisation XML d'une Array
    Par Abakai dans le forum C#
    Réponses: 3
    Dernier message: 21/05/2007, 15h30
  5. Problème sérialisation XML [C#]
    Par AlphonseBrown dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 22h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo