「Amazon API」の使い方⑤-リクエスト結果(XML)の表示編-

amazon_api_24

前回で、
リクエストURLを作成して結果を受け取ることができるようになりました。
(→ リクエストURLの作成(PHP)と結果(XML)の確認

今回は、取得した結果(XML)から値を取得してHTML形式で表示させます。

リクエスト結果(XML)の表示

XMLから値を取得するのも、PHPには関数が用意されているので、
それを使えば簡単に行うことができます。

「simplexml_load_string()」という関数ですね。
では、早速コードを見ていきましょう。


$amazon_xml = simplexml_load_string( file_get_contents( *********** ) );
foreach( $amazon_xml->Items->Item as $item ) {
	echo "<ul>";
	/* 商品名 */
	if ( ! empty( $item->ItemAttributes->Title ) ) echo "<li>" . $item->ItemAttributes->Title . "</li>";
	/* 商品のURL */
	if ( ! empty( $item->DetailPageURL ) ) echo "<li><a href=\"" . $item->DetailPageURL . "\" target=\"_blank\">" . $item->DetailPageURL . "</a></li>";
	echo "</ul>";
}

1行目の「file_get_contents」の引数にリクエストURLを入れる

1行目のアスタリスク(*)の部分にリクエストURLを入力してください。
前回(⇒リクエストURLの作成(PHP)と結果(XML)の確認)作成したリクエストURLを入れてみましょう。

前回のと組み合わせるのであれば、「$base_request」を引数として入れてあげてください。前回のソースの一番下にそのまま入れてあげると動くはずです。

実行してみると、以下のような表示になります。
amazon_api_27

表示形式は、XMLから取得した値をHTMLのタグに入れているだけなので、好きな形に変えることができます。

簡単にXMLの読み方の説明

たぶん初めて見た人には、1行目から6行目が分かりにくいかと思うので、ちょっとだけ説明します。
(イメージレベルですが。。。)

1行目でXMLの全体のオブジェクトを取得しているイメージ。
(ルート階層を持っているイメージ?)

2行目の「$amazon_xml->Items->Item」が何を指しているかと言うと、ルート(「ItemSearchResponse」)階層の子階層の「Items」。
「Items」階層の子階層の「Item」を指しています。
amazon_api_28

数えてもらうと分かりますが、パラメーターで指定しない限りは、「Item」はデフォルトで10個あります。

こいつらを全部読み込ますためにforeachで回してあげてるんですね。

ループの中では各「Item」のさらに下の階層から値を取得している感じです。

例えば、4行目の「$item->ItemAttributes->Title」であれば、「Item」の子階層の「ItemAttributes」の子階層の「Title」の値を取得しています。

今回は商品名、商品URL、価格の3つの値だけを取得していますが、XMLに書かれている情報は、上で説明したのと同じようにすれば取得できるので、欲しいデータがあれば、ガンガン取得しちゃいましょう。

まとめ

リクエスト結果(XML)の表示についてでした。
XMLのソースと見比べながらやれば、そんなに難しくないとは思います。

次回は、リクエストURLを送る際のパラメーターについて紹介していきます。

Amazonから取得した情報を内容を色々と設定することができます。
今のままだと画像とか取得できてないですからね・・・。

第1回:アソシエイトタグの取得
第2回:アクセスキーとシークレットキーの取得
第3回:リクエストURL作成の概要
第4回:リクエストURLの作成(PHP)と結果(XML)の確認-
第5回:リクエスト結果(XML)の表示
第6回:パラメーターの種類とか
最終回:実際に作ってみよう