[E-03] Extraction XML (optimisation)
Bonjour,
1) j'aimerais savoir s'il existait un tutoriel sur l'extraction .xml vers excel ou bien un document qui répondra ou aidera à répondre à ma question suivante.
2 ) J'ai un gros fichier .xml qui se présente sous cette structure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <?xml version="1.0"?>
<lists>
<list
path="svn://Machine/Repertoire">
[...]
<entry
kind="file">
<name>trunk/Repertoire/fichier.ext</name>
<size>13</size>
<commit
revision="10">
<author>admin</author>
<date>2008-12-12T14:39:23.921875Z</date>
</commit>
<lock>
<token>opaquelocktoken:194189eb-5506-6240-97a2-b72c0a435c08</token>
<owner>admin</owner>
<created>2008-12-12T14:39:23.921875Z</created>
</lock>
</entry>
[...]
</list>
</lists> |
Afin d'extraire les champs qui m'interressaient (kind et name), j'ai réussi a créer un bout de code avec des exemples que j'ai puisé ici et là, que voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Private Sub ImportBase_Click()
Dim sPath As String
Dim xmlDoc As Variant, a As Variant
Dim oElement As Object
Dim Ligne As Integer
sPath = Environ("userprofile")
ChDrive "C:" ' Choix du lecteur
ChDir sPath 'Choix du répertoire
a = Application.GetOpenFilename("fichier xml (*.xml), *.xml", _
, "Sélection du fichier Liste.xml", , false)
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = "false"
xmlDoc.Load (a)
Set oElement = xmlDoc.documentElement
Ligne = 2
For Each oElement In xmlDoc.getElementsByTagName("entry")
Sheets("Feuil1").Cells(Ligne, 1) = oElement.getAttribute("kind")
Ligne = Ligne + 1
Next
Ligne = 2
For Each oElement In xmlDoc.getElementsByTagName("name")
Sheets("Feuil1").Cells(Ligne, 2) = oElement.nodeTypedValue
Ligne = Ligne + 1
Next
End Sub |
Je pense qu'il est possible d'optimiser le temps de traitement en ne faisant qu'une seule boucle, mais je ne sais pas trop comment m'y prendre :(
Merci d'avance.
Note : je vais essayer de comprendre ce document : http://www.w3schools.com/dom/dom_nodes_get.asp