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.