- 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
-
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