0

次の 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>

このphpコードを使用して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
        }
    }
}

写真要素をループしようとすると、すべての写真が取得されますが、最初のオファーのみが取得されます。私の質問は、私が間違っていることと、各オファーの写真を取得できない理由です。

4

1 に答える 1

0

問題は、写真要素を取得する方法にあります。ルート要素から開始するため、常に同じノードが提供されます。次のように $data を使用する必要があります。

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

コードを少しきれいにして、これを使用して写真要素を表示する必要があります。

$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>";
        }
    }
}
于 2012-11-13T08:48:54.827 に答える