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 :

id, qty, nom (exemple House Baratheon)
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.

Voici ce que j'ai fais, il doit manquer quelques trucs.

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
Pourriez-vous m'aider ?