2017-02-08 9 views
0

少し埋まっているXMLデータを取得して繰り返し処理するのに問題があります。私はprint_rにオブジェクトを得ることができますが、単一の属性値だけではありません。PHPオブジェクトの配列内のオブジェクトの配列内のオブジェクトのXML属性を選択します。

ここに簡略化されたXMLがあります。巣は正確です。

SimpleXMLElement Object ( 
    [@attributes] => Array ( 
    [amenity] => Array ( 
     [0] => SimpleXMLElement Object ( 
      [@attributes] => Array ( 
       [distance] => Within Facility 
       [name] => Biking 
      ) 
     ) 
     [1] => SimpleXMLElement Object ( 
      [@attributes] => Array ( 
       [distance] => Within Facility 
       [name] => Bird Watching 
      ) 
     ) 
... 
) 
) 
) 

各アメニティの名前を取得/エコーしたいと思います。

$amenitiesSet = $xml->amenity; 

foreach ($amenitiesSet as $am) { 
    print_r($am[0]);  
} 

各オブジェクトを取得します。もっと深く進む試みは失敗しています。私はそれが私が行方不明である単純なものであることを知っている。 [i]['string']->などをいつ使用するのかよくわかりません。私はXMLデータセットを扱うのが初めてです。

のようなもの$am[0]->name

答えて

0

私は最終的に解決策を見つけました。これは、オブジェクト配列内のオブジェクトをループして、オブジェクト属性を文字列に変更するというトリックでした。それから私はリストを作ることができました。ここに最終的なループコードがあります。

foreach($xml->amenity as $AMN){ 
      $amNameItem = (string)$AMN['name']; 
      $amList .= $amNameItem.', '; 
     } 

これは最適な解決策ではありませんが、少なくとも私はxmlオブジェクトの配列内のオブジェクトの配列からオブジェクト属性のリストを取得できます。