J'ai un code qui écrit dans un fichier XML:
Qui me donne cet 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 }
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 <?xml version="1.0"?> <Pieces> <piece id="4"> <Nom>sdfsd</Nom> <DureeProg>dsqd</DureeProg> <DureeDecoup>sddfgdfg</DureeDecoup> </piece> </Pieces>
Malheureusement je n'arrive pas à l'exécuter correctement dans le code de mon else:
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>
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.
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"; }
Quelqu'un sait comment s'y prendre? quitte à ne pas utiliser InsertBefore et utiliser la manière de mon if?
Merci d'avance.
Partager