retrouver un element d'apres son id

Petit nouveau ! | 4 Messages

06 nov. 2009, 00:33

Bonjour,

je recupere une liste d'hébergements sous la forme d'un fichier xml, au final je me retrouve avec un objet :

$xml = new SimpleXMLElement($contents);

le fichier xml est sous cette forme :

[xml]- <detail dispo="-1" id="41614" pic="hebergement_m.gif">
<intitule>CAROFF</intitule>
- <ville>
<inseeVille>17385</inseeVille>
<intituleVille>ST PIERRE D OLERON</intituleVille>
</ville>
- <criteres>
- <critere id="400002862">
<intCritere>Classement préfecture</intCritere>
- <modalites>
- <modalite id="400002862000004" num="0">
<intModalite>4 étoiles</intModalite>
<valModalite />
<logoModalite emplacement="titre">http://tourisme.charente-maritime.org:8 ... goModalite>
</modalite>
</modalites>
</critere>
- <critere id="400002649">
<intCritere>Catégorie de camping</intCritere>
<modalites />
</critere>
- <critere id="400002858">
<intCritere>Capacité de la location</intCritere>
- <modalites>
- <modalite id="400002858000001" num="1">
<intModalite>Capacité d'accueil (pers.)</intModalite>
<valModalite>12</valModalite>
<logoModalite />
</modalite>
- <modalite id="400002858000002" num="1">
<intModalite>Nombre de chambres</intModalite>
<valModalite>5</valModalite>
<logoModalite />
</modalite>
- <modalite id="4000028580000010" num="0">
<intModalite>Nombre total de WC séparés</intModalite>
<valModalite>1</valModalite>
<logoModalite />
</modalite>
</modalites>
</critere>
</criteres>
</detail>[/xml]

J'arrive a parcourir toutes mes fiches de location à l'aide d'un foreach :
foreach ($xml->details->detail as $detail)
Je peux ainsi pour chaque logement afficher dans ma page les informations désirées :
<? echo $detail->intitule; ?>
J'aimerai a un moment donné afficher la capacité d'accueil du logement (ou le nombre de chambres)
soit le champ : valModalite de la modalité dont l'id est 400002858000001
[xml]- <modalite id="400002858000001" num="1">
<intModalite>Capacité d'accueil (pers.)</intModalite>
<valModalite>12</valModalite>
</modalite>[/xml]

comment procéder ?

merci

ViPHP
fab
ViPHP | 2657 Messages

06 nov. 2009, 14:20

http://www.php.net/manual/en/simplexmlelement.xpath.php

Grace à cette fonction SimpleXML te permet de faire des requêtes XPATH :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Petit nouveau ! | 4 Messages

06 nov. 2009, 14:31

Merci pour cette reponse,
j'avais bien trouvé le xpath et commencé a chercher dans cette voie mais j'ai tout de même un soucis.

Avec le xpath je peux retrouver l'élément "prix" ou l'élément "nom" et j'y arrive

le soucis est que dans mon xml j'ai plusieurs criteres
<critere id="taille"> 30 m2</critere>
<critere id="lits">3</critere>
<critere id="5 personnes"></critere>
<critere id="WC"></critere>

comment faire pour afficher a un endroit de ma page le critere "lits" ?

ViPHP
fab
ViPHP | 2657 Messages

06 nov. 2009, 15:43

en xpath ça doit être quelque chose comme

/critere[@id="lits"]
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }