Récupérer valeur d'une balise xml avec php

mike571 -  
 mike571 -
Bonjour,

Après avoir essayer tout ce que j'ai pu trouver.. Je ne trouve pas la solution à mon problème. Je dois récupérer une valeur dans un flux xml chargé sur la même page.

Pas de problème pour récupérer les valeurs des éléments parent de premier niveau. Mais impossible d'accéder aux "enfants"...

Mon xml est dans une variable $response


code xml
  <?xml version="1.0" encoding="UTF-8"?>
<response>
  <content>
    <objetList>
      <objet>
        <status>disponible</status>
        <name>nom de l'objet</name>
      </objet>
    </objetList>
  </content>
</response>


Je souhaite récupérer la valeur de la balise status et name.
Voici ce que j'ai essayé
$simplexml = simplexml_load_string($response);

$status = $simplexml->content->objetList->objet;
print "status: {$status->status} <br />\n";


Résultat : Affiche uniquement "status:"


Autre essai :

$simplexml = simplexml_load_string($response);
foreach ($simplexml->content as $content) {
  foreach ($content->objetList as $objetList) {
	foreach ($objetList->objet as $objet) {
		print "status : {$objet->status} <br />\n";
	}
  }
  }


Sachant que le code ci-dessous me renvoi bien l'ensemble des données présentes dans le xml
<?php
// affiche le contenu de notre object simplexml
print_r($simplexml);
?>	



J'ai aussi essayé avec :
$simpleXml = new SimpleXMLElement($response);
à la place de
$simplexml = simplexml_load_string($response);

Mais sans résultat..


Une idée ?


A voir également:

1 réponse

guilllaume
 
print "status: {$status->status} <br />\n";


Tu lui demandes d'afficher status alors il execute status.

ajoute un
print "Nom: {$name->name} 
0
mike571
 
Merci pour ta réponse,

Mais justement il affiche "status:"

Mais pas la valeur de status..

Je voudrais qu'il affiche :

"status: disponible"
0
guillaume
 
ok je n'avais pas compris ca.

essaye un truc comme ca :



$reponse = simplexml_load_file($mon_fichier_xml);  
$i=1;
foreach ($reponse->objet as $objet) {
$statut=$objet->status;
$name=$name->name;

echo $statut;
echo $name;
$i++;
}

0
guillaume
 
Petite erreur :
$name=$objet->name; et pas $name=$name->name;
0
mike571
 
Non, ça me donne une erreur:

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8"?>


Je précise aussi que j'ai plusieurs balises qui ont le nom 'objet"

le xml est plutot comme ceci:
<response>
<objet></objet>
  <content>
    <objetList>
      <objet>
        <status>disponible</status>
        <name>nom de l'objet</name>
      </objet>
    </objetList>
  </content>
</response>
0