頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


PHPのsimplexmlでAmazon APIのXMLのパースができん!

先日PHPをインストールしバージョンアップしたのは、AmazonのAPIを使いたかったからでして、無事、hash_hmac関数も使えてめでたしめでたし、、、
というはずなんですが、AmazonのAPIもPHPのsimplexmlも使ったことがなかったもので、また躓きましてね。

AmazonのAPIで最近変更が実行された署名うんぬんは参考ページもたくさんありなんとかできたのですが、単にXMLのパースでえらく時間がかかってしまいました。

最初、こんな感じでやろうとしました、、、

$rsp = file_get_contents($url);//$urlはリクエストするAPIのURL
$rsp=mb_convert_encoding($rsp,"EUC-JP","UTF-8");//EUCに変換
$xml = simplexml_load_string($rsp);
echo $xml->Items->Item[0]->ASIN;//出力なし(T_T)

2行目のはサイトをEUCで構築しているので、返ってきた文字列をEUCに変換してます。
ところがこれだと全く出力してくれません、、、


結局、下のようにAPIのURLからsimplexml_load_fileを使ってダイレクトにXMLオブジェクトを作成。

$xml = simplexml_load_file($url);
echo mb_convert_encoding($xml->Items->Item[0]->ItemAttributes->Author,"EUC-JP","UTF-8");//出力OK!

でも、これだといちいち必要な場合にエンコードを変換しなければなりません。
最初に一発でできればすっきりするんでしょうけど、、、まあよしとしましょう。

↓とりあえず、表示はできそうだぞ、という図
Amazon APIのテスト時の出力

<< どこから新規登録したらいいのかわからない!  TopPage  PHPのインストール >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/232-1af18372




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad