Bonjour à tous,

J'ai une difficulté avec un traitement de données xml.
Je récupère sur un serveur distant (une API) des données au format xml, j'utilise DOM pour le traitement de celui-ci. En fait le Webservice renvoie une chaîne de caractère avec tout à l'intérieur. J'utilise donc loadXML pour tout récupérer.

Mon problème est que je n'ai pas la main sur ce xml et sur la façon dont il est créé.

le format du xml ressemble à ça :
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<tree path="">
	<item  id="test"  name="test"  isFolder="true"  isLibrary="true"  path="test" >
		<item  id="iddoc1"  name="doc1"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blabla"  path="test\doc1.xml" >
			<fileInfo fileIndexed="2012-09-14 16:03:19" numPages="2" resolution="72" width="155.903" height="240.941" fileSize="103.48 Kb">
				<metaData>
					<item name="Num. Pages" value="2" />
					<item name="Width" value="55 mm" />
					<item name="Height" value="85 mm" />
				</metaData>
				<boxes />
			</fileInfo>
		</item>
		<item  id="iddoc2"  name="doc2"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blabla2"  path="test\doc2.xml" >
			<fileInfo fileIndexed="2012-09-07 10:38:47" numPages="2" resolution="72" width="155.903" height="240.941" fileSize="103.45 Kb">
				<metaData>
					<item name="Num. Pages" value="2" />
					<item name="Width" value="55 mm" />
					<item name="Height" value="85 mm" />
				</metaData>
				<boxes />
			</fileInfo>
		</item>
	</item>
 
	<item  id="test2"  name="test2"  isFolder="true"  isLibrary="true"  path="test2" >
		<item  id="test2\demodocuments"  name="demodocuments"  isFolder="true"  isLibrary="false"  path="test2\demodocuments" >
 
			<item  id="test2\demodocuments\BC"  name="BC"  isFolder="true"  isLibrary="false"  path="test2\demodocuments\BC" >
				<item  id="idBC"  name="BCV"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL=""  path="test2\demodocuments\BC\BCV.xml" >
					<fileInfo fileIndexed="2012-09-18 16:27:59" numPages="1" resolution="72" width="155.903" height="240.941" fileSize="18.13 Kb">
						<metaData><item name="Num. Pages" value="1" />
							<item name="Width" value="55mm" />
							<item name="Height" value="85mm" />	
						</metaData>
						<boxes />
					</fileInfo>
				</item>
				<item  id="idBC_DataSource"  name="BC_DataSource"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaBC_DataSource"  path="test2\demodocuments\BC\BC_DataSource.xml" >
					<fileInfo fileIndexed="2012-09-14 16:11:27" numPages="2" resolution="72" width="155.903" height="240.941" fileSize="103.45 Kb">
						<metaData>
							<item name="Num. Pages" value="2" />
							<item name="Width" value="55 mm" />
							<item name="Height" value="85 mm" />
						</metaData>
						<boxes />
					</fileInfo>
				</item>
			</item>
 
			<item  id="test2\demodocuments\CC"  name="CC"  isFolder="true"  isLibrary="false"  path="test2\demodocuments\CC" >
				<item  id="test2\demodocuments\CC\Snippets"  name="Snippets"  isFolder="true"  isLibrary="false"  path="test2\demodocuments\CC\Snippets" >
					<item  id="idKV-demo"  name="KV-demo"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaKV-demo"  path="test2\demodocuments\CC\Snippets\KV-demo.xml" >
						<fileInfo fileIndexed="2012-10-01 16:51:36" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="59.97 Kb">
							<metaData>
								<item name="Num. Pages" value="1" />
								<item name="Width" value="150 mm" />
								<item name="Height" value="100 mm" />
							</metaData>
							<boxes />
						</fileInfo>
					</item>
					<item  id="idKV"  name="KV"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaKV"  path="test2\demodocuments\CC\Snippets\KV.xml" >
						<fileInfo fileIndexed="2012-10-01 16:51:36" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="103.89 Kb">
							<metaData>
								<item name="Num. Pages" value="1" />
								<item name="Width" value="150 mm" />
								<item name="Height" value="100 mm" />
							</metaData>
							<boxes />
						</fileInfo>
					</item>
				</item>
				<item  id="idCCd"  name="CCd"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablaCCd"  path="test2\demodocuments\CC\CCd.xml" >
					<fileInfo fileIndexed="2012-04-19 17:34:08" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="137.46 Kb">
						<metaData>
							<item name="Num. Pages" value="1" />
							<item name="Width" value="150 mm" />
							<item name="Height" value="100 mm" />
						</metaData>
						<boxes />
					</fileInfo>
				</item>
			</item>
 
			<item  id="idtoto"  name="toto"  isFolder="false"  isLibrary="false"  hasPreviewErrors="false"  iconURL="blablatoto"  path="test2\demodocuments\toto.xml" >
				<fileInfo fileIndexed="2012-10-01 16:51:36" numPages="1" resolution="72" width="425.19" height="283.46" fileSize="59.97 Kb">
					<metaData>
						<item name="Num. Pages" value="1" />
						<item name="Width" value="150 mm" />
						<item name="Height" value="100 mm" />
					</metaData>
					<boxes />
				</fileInfo>
			</item>
		</item>
	</item>
</tree>

et là comme vous pouvez le voir la grande majorité des noeuds on le même nom

Je voudrais traiter ce xml, pour en faire une liste du type :

-test
- document doc1 (avec nom et photo)
- document doc2 (avec nom et photo)
-test 2
-demodocuments
-BC
- document BCV (avec nom et photo)
- document BC_DataSource (avec nom et photo)
-CC
-Snippets
- document KV-demo (avec nom et photo)
- document KV (avec nom et photo)
- document CCd (avec nom et photo)
- document toto (avec nom et photo)

Mais je n'arrive pas à faire ça, je m’emmêle les pinceaux dans les boucle les if et autre. N'y a t-il pas un moyen efficace de mettre par exemple tout dans des tableau ?
Là j'approche la surchauffe cérébrale lol

Comment prendre seulement l' <item> de premier niveau et après naviguer dans celui-ci ?

J'avais au début commencé à utiliser ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
if($pays->getAttribute("isFolder") == "true" && $pays->getAttribute("isLibrary") == "true")
Donc là je suis dans la cas d'un des dossiers "mère" (test ou test2 ). Mais après comment repartir dans le contenu de test ?

Merci à ceux qui prendront le temps de me lire mais surtout à ceux qui essayeront (et y arriveront) de m'aider ^^