Bonjour à tous,
Je câle un peu sur ça... je n'arrive pas à insérer un xelement dans une structure xml existante.
ci-dessous le fichier xml :
Code xml : 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
<?xml version="1.0" encoding="utf-8"?>
<root>
  <channels>
    <channel name="NameA">
      <entry fullname="entryA1_name">
        <data>data A1</data>
      </entry>
      <entry fullname="entryA2_Name">
        <data>data A2</data>
      </entry>
    </channel>
    <channel name="NameB">
      <entry fullname="EntryB1_name">
        <data>data B1</data>
      </entry>
    </channel>
    <channel name="NameC">
      <entry fullname="entryC1_name">
        <data>data C1</data>
      </entry>
    </channel>
  </channels>
  <settings>
    <ipconnexions>
      <connexion fullname="name connexion">
        <ip>ip address</ip>
        <hostname>machine</hostname>
        <port>24</port>
      </connexion>
    </ipconnexions>
  </settings>
</root>

Ci-dessous le code :
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
 
Imports System.Xml.Linq
Imports System.Linq
 
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        xdoc = XDocument.Load("test_cfg.xml")
        ' LINQ pour extraire le pack en fonction de l'Attr NameB ou A ou C
        Dim Lxel As IEnumerable(Of XElement) = From el In xdoc...<entry> Where el.Parent.@name = "NameB" _
                                             Select el
 
        'juste un boucle pour voir si l'extraction est ok...
        For Each el In Lxel
            RichTextBox1.Text = RichTextBox1.Text & el.ToString
        Next
 
        ' Ici la structure littérale que je souhaite ajouter à la liste Lxel 
        Dim xel As XElement = <entry fullname="entryNew_Name">
                                  <data>data New</data>
                              </entry>
 
        ' donc qlq chose comme (dans le xdoc):
        ' Lxel.add(xel)
 
        ' et enfin le save du xdoc modifié...
        xdoc.Save("test_cfg.xml")
    End Sub
Voila, je crois avoir tout mis dans les commentaire de mon code afin que vous puissiez comprendre ce que je souhaite.
Comme vous l'avez compris, c'est en fonction de l'attribut dans la requete LINQ qui me permet de choisir le pack xml où je souhaite insérer le code littéral.
Merci à tous pour votre aide.
Patrick