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
| ' j'importe dans ce sub de class mon dgv (dgv_ticker) comme datagridview
Public Sub xml_Parsing_Ticker(ByVal xml_FileName As String, ByRef dgv_ticker As DataGridView)
' création de l'objet XmlDocument et load du fichier xml
Dim myxdoc As XmlDocument = New XmlDocument
myxdoc.Load(xml_FileName) '(Application.StartupPath & "Newsite.XML")
' se placer sur la balise (tag) parent a lire (root)
Dim xml_MainRoot As XmlNodeList
xml_MainRoot = myxdoc.SelectNodes("root/messages/message") 'le texte "root..." est le "xpath", enfin je crois.
'Définition des variables Nodes
Dim xml_BlocNode, xml_EnfantNode As XmlNode
Dim mycol, myrow As Short
myrow = 0
dgv_ticker.Rows.Clear() ' ici je vide mon dgv pour le re-remplir ensuite
For Each xml_BlocNode In xml_MainRoot ' -> pour chaque bloc dans "root/etats/etat"
dgv_ticker.Rows.Add() ' là j'ajoute une ligne pour la remplir
mycol = 0 ' le dgv marche à l'envers des tableaux (colonne, ligne) et pas (ligne, colonnes)... mais dans ce cas, la 1ere case est 0,0.
' suivant la methode, la 1ere case est 1,1... c'est assez déroutant !!!
For Each xml_EnfantNode In xml_BlocNode.ChildNodes ' -> pour chaque NodeEnfant dans le node (bloc) père
If xml_EnfantNode.Name = "display" Then
Select Case xml_EnfantNode.InnerText
Case Is = "True"
dgv_ticker.Item(0, myrow).Value = True ' ici c'est une case à cocher dans le dgv
Case Else
dgv_ticker.Item(0, myrow).Value = False
End Select
End If
If xml_EnfantNode.Name = "description" Then dgv_ticker.Item(mycol, myrow).Value = xml_EnfantNode.InnerText 'dgv_ticker.Item(mycol, myrow) start à 0 pour col et row
mycol += 1
Next
myrow += 1
Next
myxdoc = Nothing
End Sub |
Partager