Extraire des données dans XML en ciblant des ID?
Hello tout le monde!
Patrick m'avait enseigné comment extraire une donnée dans un code source html avec l'aide du fameux "Split(Split(Code, "<donnee>")(1), "</donnee>")(0)" 8-)
Maintenant mon problème a changé car je génère un code source XML avec plusieurs dizaines de données à récupérer selon une ID :weird: Le contenu du XML ressemble à cela:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| - <references>
- <reference>
<referenceid>ID placé dans une cellule EXCEL</referencetid>
- <headline>
<![CDATA[donnéeX]]>
</headline>
- <caption>
<![CDATA[donneeY]]>
</caption>
- <topic>
<![CDATA[donneeZ]]>
</topic>
- <nombre>
<total>2</total>
<A>0</A>
<B>1</B>
<C>1</C>
</nombre>
- <donnees>
- <global>
- <donnee1>
<amount>donné souhaitait</amount>
<amount2>XERO</amount2>
</donnee1>
- <donnee2>
<amount>donnés souhaitait</amount>
<amount2>XERO</amount2>
</donnee2>
<type>PLUS</type>
</global>
- <B>
- <donnee1>
<amount>443644</amount>
<amount2>XERO</amount2>
</donnee1>
- <donnee2>
<amount>124444</amount>
<amount2>XERO</amount2>
</donnee2>
<type>MOINS</type>
- </B>
- <C>
- <donnee1>
<amount>5464534</amount>
<amount2>XERO</amount2>
</donnee1>
- <donnee2>
<amount>3455433</amount>
<amount2>XERO</amount2>
</donnee2>
<type>PLUS</type>
- </C>
- </donnees>
- </references>
'...plusieurs dizaines d'ID et de données |
Donc mon but serait de récupérer les données utiles dans " references/donnees/global" en dessous de chaque ID et de les rapatrier dans des cellules a côté de mes ID placées dans la colonne (A:A). A noter que l'ordre des ID dans le XML n'apparait pas dans l'ordre de mes ID sur la colonne.
Voila un code "simplifié", c'est la seconde partie qui m'intéresse car elle n'est malheureusement qu'imaginaire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 'pas de problèmes pour la partie génération et extraction du code source xml
listeID = concatener(A1:A50;""-"")
url = "http://www.site.com" & listeID
code = PostCodeSource (url)
'Voilà ce que j'imaginerai, pour le ciblage et la sélection de mes données utiles pour chaque ID
For Each C In ThisWorkbook.Worksheets("Feuill1").Range("A1:A50")
Ciblage = FindID(Code) "<referenceid>(C)</referenceid>"
C.Offset(0, 1) = Ciblage(Split(Split(Code, "references/donnees/global/donnée1/amount")(1), "</amout>")(0)) 'inscrit la donnée utile qu'il y a en dessous de l'ID
C.Offset(0, 2) = Ciblage(Split(Split(Code, "references/donnees/global/donnée2/amount")(1), "</amout>")(0)) 'inscrit la donnée utile qu'il y a en dessous de l'ID
Next C |
Merci à tous ! ;)