2012-11-13 3 views
0

je le document XML suivant:comment obtenir des éléments les valeurs de la simple xml

<?xml version="1.0"?> 
<root> 
<offers count="3009"> 
<offer> 
    <offerId>25</offerId> 
    <offer_type>for sale</offer_type> 
    <offer_status>available</offer_status> 
    <building_floors></building_floors> 
    <title>title</title> 
<photos count="4"> 
<photo zIndex="1">1.jpg</photo> 
<photo zIndex="2">2.jpg</photo> 
<photo zIndex="3">3.jpg</photo> 
<photo zIndex="4">4.jpg</photo> 
    </photos> 
    </offer> 
</offers> 
</root> 

J'utilise ce code php pour obtenir des résultats de xml:

$xml = simplexml_load_file("offers.xml") 
     or die("Error: Cannot create object"); 
foreach($xml->children() as $offers){ 
    foreach($offers->children() as $offer => $data){ 
    echo $data->offerId;echo "<br />";//and so on for each element 
      foreach ($xml->offers->offer->photos->photo as $aaa){ 
     $photos=$aaa; echo "<br />"; 
     //echo $xml; 
     $photo = explode("<br /> ", $photos); 
      foreach($photo as $value) echo $value; echo '<br />';//echo $value 
     } 
    } 
} 

Lorsque je tente de boucle l'élément photo je reçois toutes les photos mais seulement pour la première offre. Ma question est ce que je fais mal et pourquoi je ne reçois pas de photos pour chaque offre?

Répondre

0

Le problème est lié à la façon dont vous récupérez les éléments photo. Vous démarrez à partir de l'élément racine de sorte qu'il vous donne toujours le même nœud. Vous devez utiliser des données $ comme ceci:

foreach ($data->photos->photo as $aaa){ 

nettoyer un peu votre code, vous devez utiliser cette option pour afficher les éléments photo:

$xml = simplexml_load_file("offers.xml") or die("Error: Cannot create object"); 
foreach($xml->children() as $offers){ 
    foreach($offers->children() as $offer){ 
     echo "Offer id : " . $offer->offerId . "<br>"; 
     foreach ($offer->photos->photo as $photo){ 
      $val = (string) $photo; 
      echo $val . "<br>"; 
     } 
    } 
} 
Questions connexes