Lire un fichier xml à partir d'un controle treeview.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 006 fois - Téléchargée 41 fois

Contenu du snippet

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.

A voir également

Ajouter un commentaire

Commentaires

keopsk
Messages postés
96
Date d'inscription
jeudi 18 avril 2002
Statut
Membre
Dernière intervention
9 mars 2007
-
Oui, ça marche , merci
vbnul
Messages postés
85
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
15 septembre 2005
-
Ca sert à quoi de lire les xml ???
et en plus y faut une DLL ??
pfff
cs_Mercury
Messages postés
329
Date d'inscription
jeudi 3 janvier 2002
Statut
Membre
Dernière intervention
7 octobre 2005
-
vbnul => (Pas mal le pseudo :o) ) Ca sert à quoi de lire du XML ? Ben à lire un fichier XML ! ;-))) Renseignes toi sur l'utilité du XML, XSL et DTD.

C'est clair que si tu n'utilises pas de fichier XML, l'intérêt pour toi est très minime. Concernant la DLL, elle est fourni par défaut avec IE5, donc rien d'autres à fournir pour utiliser ce code.

@+

Mercury
VB6Boss
Messages postés
71
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
15 juin 2002
-
Ouais c clair c set a quedale de lire les Xml, Xsl et Dtd.
Tu devrais passer a quelque chose de plus utile. Il y a plein d'exemples dans la rubrique des tutoriaux
Ne le prends pas mal.
Vb6boss
cs_Mercury
Messages postés
329
Date d'inscription
jeudi 3 janvier 2002
Statut
Membre
Dernière intervention
7 octobre 2005
-
C'est pas grave, on ne t'en veut pas d'être bête et gamin. Mais bon faute avouée et à moitié pardonnée ... Continue, tu tiens le bon bout.

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.