[XML] @attributesのデータを取得する方法

XMLのデータの中に @attributes という要素が出てくる場合があります。通常の要素の取得方法と異なった取得方法になりますので注意が必要です。
はじめに simplexml_load_file関数でXMLデータを読み込みます。
$xml=’ファイル名’;
$data=simplexml_load_file($xml);
$dataの中身は以下のようなオブジェクト(配列)になっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
SimpleXMLElement Object ( [Element] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Name] => Taro ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Name] => Jiro ) ) ) } |
Elementの0番目の要素の Name を取り出したい場合は以下のように記載します。
1 |
$name = $data->Element[0]->attributes()->Name; |
Element[0]->@attributes->Name; と記載するとエラーになるので、attributes() と記載するようにしましょう。
データはオブジェクト形式になっているので、テキストとして取得したい場合はキャストします。
1 |
$name = (string)$data->Element[0]->attributes()->Name; |
$dataの前に(string)を付けると、オブジェクトが文字列に変換されます。
関連記事
- [CakePHP] ネスト構造の配列を簡単に扱う方法 Set::extract()
- [PHP] Warning: number_format() expects parameter 1 to be double エラーの対処法
- [CakePHP] Elementの使い方(変数の指定)
- [Laravel] BelongsToで1対多のリレーション
- [Laravel] DBから取得したデータの中身を簡単に見る方法