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

Fermé
mike571 - 7 mars 2013 à 18:02
 mike571 - 8 mars 2013 à 08:31
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

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


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

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

Mais justement il affiche "status:"

Mais pas la valeur de status..

Je voudrais qu'il affiche :

"status: disponible"
0
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
Petite erreur :
$name=$objet->name; et pas $name=$name->name;
0
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