L'objectif de ce code est d'afficher le contenu d'un fichier XML de façon hierarchique dans un contrôle Treeview.
Pour effectuer cette opération, on utilise le fichier MSXML.DLL Version 2.0 (installé par défaut avec IE5).
Le code n'est pas compliqué, et permet d'exploiter visuellement le contenu de n'importe quel fichier XML (sans DTD ni XSL).
Source / Exemple :
Option Explicit
Private Sub Form_Load()
'Chargement du fichier XML
Dim sFile As String
sFile = App.Path
If Right(sFile, 1) <> "\" Then sFile = sFile & "\"
sFile = sFile & "profils.xml"
XMLOnTreeView TreeView1, sFile
End Sub
Public Function XMLOnTreeView(tv As Object, XMLFile As String) As Boolean
Dim oDoc As New DOMDocument
If Not LCase(TypeName(tv)) = "treeview" Then Exit Function
tv.Nodes.Clear
If Dir(XMLFile) = "" Then Exit Function
If oDoc.Load(XMLFile) Then
XMLNodes2TVNodes tv, oDoc.childNodes, 0
End If
ErrorHandler:
Set oDoc = Nothing
End Function
Private Sub XMLNodes2TVNodes(tv As TreeView, ByRef Nodes As MSXML.IXMLDOMNodeList, ByVal Indent As Integer, Optional ParentKey As Variant)
Dim oNode As MSXML.IXMLDOMNode
Dim lKey As Long
Dim sKey As String
Indent = Indent + 2
For Each oNode In Nodes
If LCase(oNode.nodeName <> "xml") Then
If oNode.hasChildNodes = False Then
If oNode.nodeType = NODE_TEXT Or oNode.nodeType = NODE_CDATA_SECTION Then
tv.Nodes.Add CStr(ParentKey), tvwChild, , oNode.nodeValue
End If
Else
On Error Resume Next
If IsMissing(ParentKey) Then
sKey = oNode.nodeName
tv.Nodes.Add , , sKey, sKey
Else
Do
On Error Resume Next
sKey = oNode.nodeName & CStr(lKey)
tv.Nodes.Add CStr(ParentKey), tvwChild, sKey, oNode.nodeName
If Err.Number <> 0 Then
Err.Clear
lKey = lKey + 1
Else
Exit Do
End If
Loop
End If
End If
If oNode.hasChildNodes Then
XMLNodes2TVNodes tv, oNode.childNodes, Indent, sKey
End If
End If
Next oNode
End Sub
Conclusion :
Ajouter simplement un controle TREEVIEW dans votre feuille.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.