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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 182 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

Messages postés
21
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
8 décembre 2007

ça sert toujours merci
Messages postés
2
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
18 juin 2004

Gracias Fabio972,
On m'avait dit que le VB marcherai, mais .Net est un peu bizarrrr
;-)
Messages postés
62
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
4 août 2004

AIE Candidus, tu auras du mal à mettre un treeeview en ASP car c'est un code pour Visual Basic :-)

Pour l'ASP, regardes par là : http://www.aspfr.com/
Messages postés
2
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
18 juin 2004

Scuser moi,
Moi grosse merde débute en ASP, y a t'il la possibilité de m'expliquer comment insérer ce code euh...........
Je sais que c'est un peu abuser mais je galère pour commencer ASP
Alors si une âme charitable veut bien se dévouer, car je n'arrive pas à ajouter le control Treeview et le reste....

Merci pour la réponse. Je me replonge dans ASP plouf...
Messages postés
118
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2008

Très bien ton code, merci !

J'aimerais savoir, quand je click dans le treeview, aurait t'il une manière de retourner dans le XML et faire une recherche pour aller chercher d'autre information comme: d'après le onode.name avoir le onode.xml ?

Merci
Note : 9/10
Afficher les 23 commentaires

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.