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 :

Manipuler des XML en c# avec un windows form


Sujet :

Windows Forms

  1. #1
    Courgette17
    Invité(e)
    Par défaut Manipuler des XML en c# avec un windows form
    J'ai un code qui écrit dans un fichier XML:

    Code c# : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    private void btnValider_Click(object sender, EventArgs e)
            {
                FileStream fichier = new FileStream("pieces.xml", FileMode.OpenOrCreate);
                XmlTextWriter filexml = new XmlTextWriter(fichier, null);
     
                if (!File.Exists("pieces.xml"))
                {
                    filexml.WriteStartDocument();// = <?xml version="1.0" standalone="yes"?>
                    filexml.WriteWhitespace("\n");
                    filexml.WriteWhitespace("\t");
                    filexml.WriteStartElement("Pieces");// début d'un élément <pieces>
                    filexml.WriteWhitespace("\n");
     
                    filexml.WriteWhitespace("\t\t");
     
                    filexml.WriteStartElement("piece");
                    filexml.WriteWhitespace("\n\t\t\t");
     
                    filexml.WriteStartElement("Id");
                    filexml.WriteString("4");
                    filexml.WriteEndElement();
     
                    filexml.WriteWhitespace("\n\t\t\t");
     
                    filexml.WriteStartElement("Nom");
                    filexml.WriteString(txtNomPieceBasique.Text);
                    filexml.WriteEndElement();
     
                    filexml.WriteWhitespace("\n\t\t\t");
     
                    filexml.WriteStartElement("DureeProg");
                    filexml.WriteString(txtDureeProgrammation.Text);
                    filexml.WriteEndElement();
     
                    filexml.WriteWhitespace("\n\t\t\t");
     
                    filexml.WriteStartElement("DureeDecoup");
                    filexml.WriteString(txtDureeDecoupage.Text);
                    filexml.WriteEndElement();
     
                    filexml.WriteWhitespace("\n\t\t\t");
     
                    filexml.WriteEndElement(); // </piece>
                    filexml.WriteWhitespace("\n");
     
                    filexml.WriteEndElement(); //</Pieces>
                    filexml.Close();// ferme le fichier
                }
    Qui me donne cet XML:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0"?>
        <Pieces>
            <piece id="4">
                <Nom>sdfsd</Nom>
                <DureeProg>dsqd</DureeProg>
                <DureeDecoup>sddfgdfg</DureeDecoup>
            </piece>
        </Pieces>
    Et j'aimerais que lorsqu'il trouve déja le fichier qu'il m'ajoute la nouvelle pièce au dessus de la balise </Pieces> de cette manière:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0"?>
        <Pieces>
            <piece id="4">
                <Nom>sdfsd</Nom>
                <DureeProg>dsqd</DureeProg>
                <DureeDecoup>sddfgdfg</DureeDecoup>
            </piece>
            <piece id="5">
                <Nom>aaaa</Nom>
                <DureeProg>bbbb</DureeProg>
                <DureeDecoup>ccc</DureeDecoup>
            </piece>
        </Pieces>
    Malheureusement je n'arrive pas à l'exécuter correctement dans le code de mon else:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
                else
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml("pieces.xml");
     
                    XmlNode root = doc.FirstChild;
                    XmlElement elem = doc.CreateElement("price");
                    elem.InnerText = "19.95";
     
                    doc.InsertAfter(elem,doc.LastChild);
     
                    lblsave.Visible = true;
                    lblsave.Text = "OK";
     
                }
    Apparemment, il faut utiliser InsertBefore ou InsertAfter mais je ne vois pas comment parce que je ne sais pas par quoi remplacer les données que j'ai trouvé sur le net dans ce else.

    Quelqu'un sait comment s'y prendre? quitte à ne pas utiliser InsertBefore et utiliser la manière de mon if?

    Merci d'avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Pour charger un fichier XML c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    doc.Load("pieces.xml");
    LoadXml charge une string qui contient du XML.

  3. #3
    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
    Comme l'a indiqué Kaidan, change de méthode pour charger ton fichier XML.

    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.DocumentElement.AppendChild(monNouveauNoeudXml);
    pour ajouter ton noeud à la fin du document XML, si le schéma donné est fixe bien évidemment.

    Tu peux également récupérer l'information en passant par XPath. C'est plus flexible suivant les besoins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNode lastPiece doc.SelectSingleNode("/Pieces/piece[last()]");
    Après il ne te reste qu'à créer l'élément à insérer et appeler InsertAfter en utilisant lastPiece comme noeud de référence pour l'insertion.
    Pas de questions techniques par MP

Discussions similaires

  1. Manipulation des octets de trame avec java
    Par jeanjean6 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 19/04/2010, 12h16
  2. Manipuler des fichiers de type Unix sous Windows
    Par hermes1983 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/06/2009, 08h43
  3. manipulation des fichiers et dossiers avec VBA excel
    Par GBAGO dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/07/2007, 23h30
  4. Manipulation des bases de registre avec VB.NET
    Par noussaENSI dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/07/2006, 13h27
  5. [C#] Look and Feel Office 2003 avec les Windows Forms
    Par vandamme dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/01/2006, 00h18

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