
XMLのデータの中に @attributes という要素が出てくる場合があります。通常の要素の取得方法と異なった取得方法になりますので注意が必要です。
はじめに simplexml_load_file関数でXMLデータを読み込みます。
$xml=’ファイル名’;
$data=simplexml_load_file($xml);
$dataの中身は以下のようなオブジェクト(配列)になっています。
SimpleXMLElement Object ( [Element] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Name] => Taro ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Name] => Jiro ) ) ) }
Elementの0番目の要素の Name を取り出したい場合は以下のように記載します。
$name = $data->Element[0]->attributes()->Name;
Element[0]->@attributes->Name; と記載するとエラーになるので、attributes() と記載するようにしましょう。
データはオブジェクト形式になっているので、テキストとして取得したい場合はキャストします。
$name = (string)$data->Element[0]->attributes()->Name;
$dataの前に(string)を付けると、オブジェクトが文字列に変換されます。