楽天 API と simplexml_load_file

Posted on 2008年 3月 6日 木曜日 by takafumi

サーバのphpが5になったってことはxmlが扱いやすくなったんだっけ?というわけで楽天の商品検索APIをさわってみました。

php5なんだから simplexml_load_file を使ってみようと調べてみたら、それってずるいんじゃね?ってぐらい簡単。呼び出すだけ。

でも、なぜかちゃんと読み込まれません。中身を吐き出させてみると、空。いろいろググってみたら、名前空間がどうのこうので、つまりタグ(?)の中に:(コロン)があるとうまく動かないとのこと。というわけでメモ。見つけた解決策はこう。

$addr = '目的のアドレス';
$tmpData = file_get_contents($addr);
$tmpData = str_replace('header:Header', 'Header', $tmpData);
$tmpData = str_replace('itemSearch:ItemSearch', 'ItemSearch', $tmpData);
$xml = simplexml_load_string($tmpData);

とりあえず持ってきて、引っかかる部分を置き換えて、読み込ませる、ということらしいです。商品検索API以外の場合は2つめの置換、ItemSearch のところが変わります。たぶん。

あと引っかかったのが、直接xmlを読む場合は simplexml_load_file ですが、この場合は simplexml_load_string になってます。これ見落として30分ぐらい…。 oops

調べてる途中でわかったんですが、どうやら途中の仕様変更でこうなったそうです。どおりで解説ページとかでもスルーされてるはずです。試してみると2007-02-14までのバージョンでAPIから取り出すと大丈夫でした。ちなみにxmlとしては問題なくてsimpleXMLの変な動きが原因なのだとか。

というわけでそのうちなんか公開するかも。そのまえに以前作ったAmazon用のを改造してもっと使いやすくするのが先?

追記

simpleXML でもちゃんと名前空間付きの xml (って表現でいいのか分からんけど)を扱う方法は用意されているらしいです。

.☆★ ステレオタイプラボ ★☆. [php]simplexml_load_fileでうまくパース出来ない、なんて事はない。& 正解とお手軽方法
SimpleXMLで名前空間付きタグの一覧を取得する – 肉とご飯と甘いもの @ sotarok

Children なんてのを使うらしいですが…ワタシにはよく分かりません。 oops
物事はなんでもキッチリ処理しないと気持ちが悪い、落ち着かない、イライラするッ!という方は是非お試し下さい。

tweet this

“楽天 API と simplexml_load_file”へのコメント

うわー ありがとうございます!
どうしてもうまくいかなくて色々方法を変えてトライ&エラーでやってました。
半日悩んで、このブログにたどり着きました。
今、この方法で無事に動作しました!
本当に助かりましたm(_ _)m

コメント by tommy
2008年4月8日 火曜日

コメントありがとうございます。
お役に立てたようで何よりです。 grin

コメント by takafumi
2008年4月9日 水曜日

自分も同じところでつまっておりました。。
1週間くらいハマりそうな予感がしていたのですが、
この記事を読んですぐに解決することができました。
本当にありがとうございます!

コメント by saku
2008年6月15日 日曜日

コメントありがとうございます。
解決の手がかりになれたのなら良かったです。 grin

コメント by takafumi
2008年6月16日 月曜日

razz 悩んで先に進めなかった部分が解決しました。
ありがとうございました。

 私は、楽天BooksAPIだったので、文字列置換が異なっていました。
変更したら、読み込めましたが、ネスト(?)の部分で、また躓きましたが、やっと自己解決しました

コメント by goodman
2008年11月17日 月曜日

コメントありがとうございます。
お役に立てたようでうれしい限りです。 grin

コメント by takafumi
2008年11月19日 水曜日

ありがとございます!
参考になりました

コメント by にんにん
2009年2月3日 火曜日

どういたしまして!
コメントを残していただきありがとうございます。

コメント by takafumi
2009年2月4日 水曜日

同じ部分で躓いてハマってました。

解決しとても参考になりました!
ありがとうございます!

コメント by sai
2009年2月12日 木曜日

参考になってよかったです。
コメントありがとうございます!

コメント by takafumi
2009年2月16日 月曜日

RSS feed for comments on this post.

“楽天 API と simplexml_load_file”へコメントをどうぞ

mrgreen neutral arrow idea ? ! -) roll twisted evil cry oops razz mad lol cool ??? shock eek sad smile grin

“楽天 API と simplexml_load_file”へのトラックバックURL