Bonjour à tous,
Je commence à comprendre le fonctionnement du DOM et j'ai pu produire ou reproduire certains scripts permettant la lecture et l'extraction de données présentes dans un fichier XML.
Cependant la plus part de mes lecture présentent du code appliqué à un fichier présentant une profondeur de "NOEUDS" définie. ci-dessous un exemple de code qui marche très bien pour 3 niveaux à partir d'un noeud selectionné :
Au cas présent, le fichier xml utilisé est tiré d'un exemple tiré de ce site : https://www.w3schools.com/xml/dom_intro.asp
Ma question : Est-il possible techniquement d'adapter ce code à N noeuds enfants ? (sans connaitre en avance la profondeur du graphe)
En idée serait de variabiliser le chemin du noeud auquel on s'intéresse avec une boucle WHILE "NoeudAnalysé" "a des noeuds enfants et de récupérer le nom des balises + les valeurs mais il faudrait que cette fonction sous récursive et ça je ne sais pas faire.....
Merci d'avance pour vos retours !
Très cordialement
Je commence à comprendre le fonctionnement du DOM et j'ai pu produire ou reproduire certains scripts permettant la lecture et l'extraction de données présentes dans un fichier XML.
Cependant la plus part de mes lecture présentent du code appliqué à un fichier présentant une profondeur de "NOEUDS" définie. ci-dessous un exemple de code qui marche très bien pour 3 niveaux à partir d'un noeud selectionné :
VB:
Sub W3C1()
Dim xmlDoc As Object
Dim RacineElement, BookElement As Object
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "false"
xmlDoc.Load (ThisWorkbook.Path & "\BOOKSHOP.xml")
Set RacineElement = xmlDoc.SelectNodes("//bookstore")
Dim Nv1, Nv2, Nv3 As Object
For Each Nv1 In RacineElement
Debug.Print Nv1.BaseName & vbCrLf
For Each Nv2 In Nv1.ChildNodes
Debug.Print Nv2.BaseName
For Each Nv3 In Nv2.ChildNodes
Debug.Print Nv3.BaseName & " : " & Nv3.text
Next
Debug.Print vbCrLf
Next
Next
Set xmlDoc = Nothing
End Sub
Au cas présent, le fichier xml utilisé est tiré d'un exemple tiré de ce site : https://www.w3schools.com/xml/dom_intro.asp
Ma question : Est-il possible techniquement d'adapter ce code à N noeuds enfants ? (sans connaitre en avance la profondeur du graphe)
En idée serait de variabiliser le chemin du noeud auquel on s'intéresse avec une boucle WHILE "NoeudAnalysé" "a des noeuds enfants et de récupérer le nom des balises + les valeurs mais il faudrait que cette fonction sous récursive et ça je ne sais pas faire.....
Merci d'avance pour vos retours !
Très cordialement