Bonjour,
J'ai un fichier XML que je cherche à parser pour en récupérer les informations sous forme de tableau.
Voici un exemple de fichier :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
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
57 <?xml version="1.0" encoding="utf-8" standalone="yes"?> <deck game="30c200c9-6c98-49a4-a293-106c06295c05" sleeveid="0"> <section name="Faction" shared="False"> <card qty="1" id="a8c94f92-2b17-4a78-bf0f-4411838b9826">House Baratheon</card> </section> <section name="Agenda" shared="False"> <card qty="1" id="b3fd4493-5ee7-4e46-9b3b-4ea3d767198b">Banner of the Rose</card> </section> <section name="Plots" shared="False"> <card qty="1" id="de88edda-f5a4-4985-8ac1-2b8205c13416">A Clash of Kings</card> <card qty="1" id="0fb3ad4b-5cf3-49e9-a33f-484ecafeabf8">A Noble Cause</card> <card qty="1" id="446ac0b9-746f-4aa3-b8bf-f132d2b29499">Confiscation</card> <card qty="2" id="424194c0-ad9c-473b-b254-40b1274152ba">Heads on Spikes</card> <card qty="1" id="a9f2fccd-11f3-4562-aa5a-76d606712311">Marched to the Wall</card> <card qty="1" id="d10a1ced-df94-419b-af8e-4eadc2eb4688">Wildfire Assault</card> </section> <section name="Characters" shared="False"> <card qty="1" id="499ed82d-cc0e-43a5-89ba-a748b388f528">Littlefinger</card> <card qty="1" id="be9304f2-bb5d-4d19-8fbe-4efb6ee24f29">Rattleshirt's Raiders</card> <card qty="1" id="0c97b091-96c0-46df-8442-e904025304fb">Maester Cressen</card> <card qty="3" id="6ab37ed8-df99-410d-a9ff-7afe98f7ee22">Melisandre</card> <card qty="3" id="78ca6089-6d16-4e41-8df7-40042e3dc077">Robert Baratheon</card> <card qty="1" id="88de8a8f-4d15-415c-96c8-38edc8f8fe99">Selyse Baratheon</card> <card qty="1" id="813fb666-b32f-4ae9-b2ac-3fe09adccf9a">Ser Davos Seaworth</card> <card qty="1" id="6967fd81-f9f9-4077-8d5a-c9ca189a5e41">Shireen Baratheon</card> <card qty="3" id="21c87233-3c2e-4a66-9ea0-ffaf5ac0594c">Fiery Followers</card> <card qty="3" id="2a669f95-cad1-43eb-b7a5-4aac56b411de">Dragonstone Faithful</card> <card qty="3" id="9e0df853-1c6d-4be2-b799-fe69524a6057">Margaery Tyrell</card> <card qty="3" id="dd950122-b92e-4d6b-b1f4-d8a3f623a99a">Randyll Tarly</card> <card qty="3" id="dfb7512e-0d80-4dff-8fdf-4807d93ba159">The Knight of Flowers</card> <card qty="3" id="8192ab17-f699-45b9-931b-e0933dbc01eb">Garden Caretaker</card> <card qty="1" id="47292ec9-f2dc-4786-b895-d92c2ae9af80">Moon Boy</card> <card qty="2" id="6f350923-3da1-4779-96c6-8ceb8341e81e">Asshai Priestess</card> <card qty="2" id="60e649e3-c3ee-4814-83bf-e39ac86a3cd7">Brienne of Tarth</card> <card qty="1" id="e5ac9f1c-e422-441d-b155-109040e45b25">Edric Storm</card> </section> <section name="Locations" shared="False"> <card qty="3" id="90452d99-6a6f-4d0d-b3a1-bb92e7110d1d">The Kingsroad</card> <card qty="3" id="51a3e04f-3f44-4417-8d7c-1f116acd5c80">The Roseroad</card> <card qty="2" id="1daa814f-c6b8-4dcc-b4f7-169968be4bc5">Dragonstone Port</card> <card qty="2" id="3a89059b-0e56-4b47-aad7-8d2b0a245149">The Red Keep</card> <card qty="1" id="ef76aca1-0ad8-423e-9de0-c271943b8b4a">Caswell's Keep</card> <card qty="1" id="e5ac9f1c-e422-441d-b155-109040e45b42">Ocean Road</card> </section> <section name="Attachments" shared="False"> <card qty="2" id="f5173e6f-1ec3-4ee0-8274-755160c57c0e">Bodyguard</card> </section> <section name="Events" shared="False"> <card qty="1" id="38dd5d15-7214-4c68-9cc4-0d2abd1b2140">Put to the Sword</card> <card qty="1" id="b29c7bb5-7b84-4e94-a30b-8332fad51c2a">Tears of Lys</card> <card qty="2" id="b1092dd9-01aa-4622-9026-d905a44dd874">Consolidation of Power</card> <card qty="3" id="50402306-cc27-4e3e-9924-aa13f430cb60">Seen In Flames</card> <card qty="2" id="9d81eee2-2281-4bad-933c-9915b9eb9aca">Nightmares</card> <card qty="2" id="69fe7a62-2def-4e6c-9c61-4728ff354ab0">Even-Handed Justice</card> </section> <notes><![CDATA[]]></notes> </deck>
Je cherche à récupérer les éléments dans un tableau qui, pour chaque ligne, comporterait les informations suivantes :
Je sais qu'il faut utiliser les requêtes XPath pour celà et j'ai bricolé un début de code qui va dans ce sens mais je me perds un peu.id, qty, nom (exemple House Baratheon)
Voici ce que j'ai fais, il doit manquer quelques trucs.
Pourriez-vous m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 sPathXml est une chaîne = ComplèteRep(fRepExe()) + "monfichierxml.xml" sXML est une chaîne sXPath est une chaîne sId, sQty, sNom sont des chaînes SI XMLDocument("DocXML", sXML) ALORS sXPath = "count(/deck/section)" SI PAS XMLExécuteXPath("DocXML",sXPath) ALORS Erreur("La requête XPath <"+sXPath+"> a échoué") FIN lNbTAG est entier = XMLRésultat("DocXML") POUR i = 1 _A_ lNbTAG sXPath = "/deck/section["+i+"]" SI PAS XMLExécuteXPath("DocXML",sXPath) ALORS Erreur("La requête XPath <"+sXPath+"> a échoué") FIN XMLFils("DocXML") TANTQUE PAS XMLEnDehors("DocXML") SELON XMLNomElément("DocXML") CAS "id" : sId = XMLDonnée("DocXML") CAS "qty" : sQty = XMLDonnée("DocXML") // Il manque le nom ici FIN XMLSuivant("DocXML") FIN FIN SI PAS XMLTermine("DocXML") ALORS Erreur("Impossible de fermer le document DocXML") FIN SINON Erreur(ErreurInfo(errComplet)) FIN
Partager