Bonjour,
Sur l'application que je commence à coder, je suis confronté à un problème dont je ne parviens pas à trouver la solution.
En effet, j'ai le code suivant, pour exporter le contenu d'un TreeView dans un fichier XML :
Puis, j'ai le code suivant, pour faire l'inverse, à savoir lire un fichier XML et l'utiliser pour créer les noeuds dans le TreeView :
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
36
37
38
39
40
41
42 Dim sr As StreamWriter Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click sr = New StreamWriter("MonFichier.xml") sr.WriteLine("<?xml version=""1.0"" encoding=""ISO-8859-1""?>") sr.WriteLine("<" & TreeView1.Nodes(0).Text & ">") For Each Noeud As TreeNode In TreeView1.Nodes saveNode(Noeud.Nodes) Next sr.WriteLine("</" & TreeView1.Nodes(0).Text & ">") sr.Close() End Sub Private Sub saveNode(tnc As TreeNodeCollection) For Each Noeud As TreeNode In tnc If Noeud.Nodes.Count > 0 Then sr.WriteLine("<" & Noeud.Text & ">") saveNode(Noeud.Nodes) sr.WriteLine("</" & Noeud.Text & ">") Else sr.WriteLine(Noeud.Text) End If Next End Sub
Le problème est que lorsque j'ai un TreeView présenté ainsi :
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
36
37
38
39
40
41
42
43
44
45
46
47
48 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim xDoc As XmlDocument = New XmlDocument xDoc.Load("MonFichier.xml") TreeView1.Nodes.Clear() TreeView1.Nodes.Add(New TreeNode(xDoc.DocumentElement.Name)) Dim tNode As TreeNode = New TreeNode() tNode = TreeView1.Nodes(0) addTreeNode(xDoc.DocumentElement, tNode) TreeView1.ExpandAll() End Sub Private Sub addTreeNode(Noeud As XmlNode, TNoeud As TreeNode) Dim xNode As XmlNode Dim tNode As TreeNode Dim xNodeListe As XmlNodeList If Noeud.HasChildNodes Then xNodeListe = Noeud.ChildNodes For i = 0 To xNodeListe.Count - 1 xNode = Noeud.ChildNodes(i) TNoeud.Nodes.Add(New TreeNode(xNode.Name)) tNode = TNoeud.Nodes(i) addTreeNode(xNode, tNode) Next Else TNoeud.Text = Noeud.OuterXml.Trim() End If End Sub
Lorsque je crée le XML à partir de ce dernier, le code dans le fichier est le suivant :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="ISO-8859-1"?> <Arbo> <Item1> TOTO TUTU </Item1> </Arbo>
Les items TOTO et TUTU apparaissent l'un après l'autre sans balise !
Et du coup, une fois que je charge le fichier pour créer les noeud dans un TreeView vide, voici le résultat :
Ne connaissant pas vraiment le format XML, quelqu'un pourrait-il m'expliquer comment faire pour éviter ce résultat, et bien faire apparaître les deux derniers noeuds enfants comme deux noeuds séparés et non un seul avec les deux noms concaténés svp ?
Merci d'avance de votre aide !
Bonne journée.
Cordialement-
Partager