PHP で Amazon Product Advertising API を利用して受け取った検索結果の XML データは、SimpleXML のオブジェクトで取り込むことで処理も容易になる。のだが、属性データのアクセスでつまづいて年を越してしまった。次のようなオブジェクトの [@attributes] が、どうやってアクセスしたらいいか分からなかったのである。
SimpleXMLElement Object ( [Argument] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Name] => Timestamp [Value] => 2010-01-02T13:34:57Z ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Name] => Version [Value] => 2009-10-01 ) )
年も改まったので、早速 Google 先生にお尋ねしたところ、どなたかのブログのメモ「PHPのsimplexmlで読み込んだXMLの@attributesにアクセスする方法」がヒットした。
なるほど、
$name = $xml->Argument[0]->attributes()->Name; $value = $xml->Argument[0]->attributes()->Value;
とアクセスすればいいわけか。
ただし、$name も $value もオブジェクトなので、文字列として利用したい場合は、次のようにキャストしておくと良い。
$name = (string) $xml->Argument[0]->attributes()->Name; $value = (string) $xml->Argument[0]->attributes()->Value;