Bonjour,

j'ai un fichier xml et j'aimerais bien en extraire seulement quelques valeurs. Le problème c'est queje n'arrive jamais à saisir comment fonctionne les hiérarchie des noeuds surtout quel il en en a plusieurs du même type.

Voila un exemple du fichier xml
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
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
 
<?xml version="1.0"?>
<disco>
 <section>nom</section>
 <rubriques>
 <rubrique>
   <Titre>Titre rubrique</Titre>
   <cd>
    <idcd>1</idcd>
    <Titre>titre album</Titre>
    <Annee>2003</Annee>
    <code>ea2003</code>
    <visuels>
     <visuel>
       <img>visu1.jpg</img>
       <legende>Face</legende>
     </visuel>
     <visuel>
       <img>visu2.jpg</img>
       <legende>Dos</legende>
     </visuel>
     <visuel>
       <img>visu3.jpg</img>
       <legende>CD</legende>
     </visuel>
    </visuels>
    <titres>
     <titre>
      <id>01</id>
       <morceau>morceau1</morceau>
       <duree>3:36</duree>
     </titre>
     <titre>
       <id>02</id>
       <morceau>morceau2</morceau>
       <duree>3:46</duree>
     </titre>
    </titres>
    <Type>Type cd</Type>
   </cd>
   <cd>
    <idcd>2</idcd>
    <Titre>Titre2</Titre>
    <Annee>2004</Annee>
    <code>ea2004</code>
    <visuels>
     <visuel>
       <img>visu3.jpg</img>
       <legende>Face</legende>
     </visuel>
     <visuel>
       <img>visu4.jpg</img>
       <legende>Dos</legende>
     </visuel>
     <visuel>
       <img>visu5.jpg</img>
       <legende>CD</legende>
     </visuel>
    </visuels>
    <titres>
     <titre> 
       <id>01</id>
       <morceau>Titre1</morceau>
       <duree>3:36</duree>
     </titre>
     </titres>
    <Type>Commercial</Type>
   </cd>
  </rubrique>
 <rubrique>
   <Titre>Titre rubrique 2</Titre>
   <cd>
    <idcd>3</idcd>
    <Titre>titre album</Titre>
    <Annee>2003</Annee>
    <code>ea2003</code>
    <visuels>
     <visuel>
       <img>visu6.jpg</img>
       <legende>Face</legende>
     </visuel>
     <visuel>
       <img>visu7.jpg</img>
       <legende>Dos</legende>
     </visuel>
     <visuel>
       <img>visu8.jpg</img>
       <legende>CD</legende>
     </visuel>
    </visuels>
    <titres>
     <titre>
      <id>01</id>
       <morceau>morceau1</morceau>
       <duree>3:36</duree>
     </titre>
     <titre>
       <id>02</id>
       <morceau>morceau2</morceau>
       <duree>3:46</duree>
     </titre>
    </titres>
    <Type>Type cd</Type>
   </cd>
   <cd>
    <idcd>4</idcd>
    <Titre>Titre2</Titre>
    <Annee>2004</Annee>
    <code>ea2004</code>
    <visuels>
     <visuel>
       <img>visu9.jpg</img>
       <legende>Face</legende>
     </visuel>
     <visuel>
       <img>visu10.jpg</img>
       <legende>Dos</legende>
     </visuel>
     <visuel>
       <img>visu11.jpg</img>
       <legende>CD</legende>
     </visuel>
    </visuels>
    <titres>
     <titre> 
       <id>01</id>
       <morceau>Titre1</morceau>
       <duree>3:36</duree>
     </titre>
     </titres>
    <Type>Commercial</Type>
   </cd>
  </rubrique>
</rubriques>
</disco>
Je souhaiterais donc récupérer uniquement les valeurs <img> correspondant à l'<idcd> passé en paramètre.

J'ai pensé utiliser DomDocument mais je ne m'en sors pas.
Ce code ne fonctionne pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<?php
$dom = new DomDocument();
$dom->load('disco.xml');
$id=$_GET['id']; //contient la valeur idcd à rechercher
$cd = $dom->getElementsByTagName('cdid')->item($id);
$contenu_cd = $cd->getElementsByTagName('visuels')->item(0);
$visuels=contenu_cd->getElementsByTagName('visuel');
foreach($visuels as $visuel)
  echo $visuel->firstChild->nodeValue . "<br />";
?>