楽天 API と simplexml_load_file

2008年3月6日 木曜日 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:
物事はなんでもキッチリ処理しないと気持ちが悪い、落ち着かない、イライラするッ!という方は是非お試し下さい。

カテゴリー:パソコン・インターネット

タグ: , ,

  • tommy より:

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

  • takafumi より:

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

  • saku より:

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

  • takafumi より:

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

  • goodman より:

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

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

  • takafumi より:

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

  • にんにん より:

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

  • takafumi より:

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

  • sai より:

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

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

  • takafumi より:

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

  • […] ここのサイトを見て、解決しました。 ⇒楽天 API と simplexml_load_file […]

  • […] 以下のページが参考になりました。 楽天 API と simplexml_load_file : やおよろグッ! […]

  • 楽天apiとsimplexml | Yudai-stadium にコメントする コメントをキャンセル

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です