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

Windows Forms Discussion :

Problème écriture fichier XML


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut Problème écriture fichier XML
    Bonjour à tous,
    J'ai un petit soucis d'écriture XML en C#, je sais d'où ça vient du moins je pense savoir mais je ne sais pas comment le règler.
    Donc en fait je crée un fichier xml qui est initialisé à l'ouverture du formulaire, je clique sur le bouton lancer et j'écris des données dedans en boucle jusqu'à ce que je clique sur arrêter. Et quand je veux relancer l'écriture, j'ai une exception qui est gérée, celle-ci :
    Write Start Document doit être le premier appel
    Quelqu'un a t'il une proposition pour moi ?
    Et voilà le code en partie :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
        public partial class F_Temperature : Form
        {
            XmlTextWriter ReleveSonde = new XmlTextWriter("releveTemperature.xml", System.Text.Encoding.UTF8);
     
    private void B_Lancer_Click(object sender, EventArgs e)
            {
                try
                {
                    ReleveSonde.WriteStartDocument();
                    ReleveSonde.Formatting = Formatting.Indented;//présentation du fichier xml sous une forme claire
                    ReleveSonde.WriteComment("Relevés de la sonde"); // commentaire
                    ThreadStart delegue = new ThreadStart(Consult);
                    this.monThread = new Thread(delegue);
                    this.monThread.Start();
                }
                catch (Exception xml)
                {
                    MessageBox.Show(xml.Message.ToString());
                }
            }
     
            private void B_Arret_Click(object sender, EventArgs e)
            {
                // Stop le thread
                this.monThread.Abort();
                ReleveSonde.WriteEndElement();//fin d'écriture du fichier xml
                ReleveSonde.Flush();
                ReleveSonde.Close();
            }
            //dans la boucle j'écris de cette façon 
            ReleveSonde.WriteStartElement("releve");
            ReleveSonde.WriteElementString("moment", DateTime.Now.ToString() + "," + DateTime.Now.Millisecond.ToString());
            ReleveSonde.WriteElementString("temperature", valeur);
            ReleveSonde.WriteEndElement();
            ReleveSonde.Flush();// efface les mémoires tampons du flux
    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    C'est parce que tu travailles sur la même instance de XmlTextWriter. Il faut instancier ton objet XmlTextWriter lorsque tu lances l'écriture et non pas lorsque tu déclares le champ ReleveSonde. Par contre cela va écraser le contenu du fichier.

    Sinon après le Flush ajoute un appel à Close histoire de fermer le flux.
    Pas de questions techniques par MP

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 307
    Points : 87
    Points
    87
    Par défaut
    Ok merci pour le conseil, sinon là actuellement j'ai changé quelques trucs et ça fonctionne également. La création du fichier est lancé à l'initialisation de la fenêtre juste après InitialiseComponent() et sa fermeture est géré en cliquant sur le bouton fermer comme cela si l'utilisateur souhaite lancer la boucle, faire une pause puis le relancer, les données sont enregistrées sur un même fichier.
    En tout cas c'est résolu.

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

Discussions similaires

  1. Problème lors de lecture ou écriture fichier XML.
    Par Jeano81 dans le forum VB.NET
    Réponses: 9
    Dernier message: 09/05/2015, 22h59
  2. Problème écriture fichier xml
    Par ludo24 dans le forum ASP
    Réponses: 23
    Dernier message: 23/06/2008, 11h48
  3. [C#] Problème chargement fichier xml dans treeview
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2006, 14h10
  4. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11
  5. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17

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