[XML] extraire des valeurs d'un xml
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:
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:
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 />";
?> |