マッシュアップのための第一歩:FlashでAPIからXMLを呼んだときはxmlnsに注意する

なんかマッシュアップとやらが流行ってるらしいので、リクルートAPIキーを取得してマッシュアップしてやろう、と思い立ったんですがXMLを呼んだだけで満足してしまったので続きは後日。
今回の結果だけ書いておこう。っていうか1年も前にMTLのtaquoさんがそういう記事を書いてた。

↑これはFlashでホットペッパービューティの西東京エリアのサロンを取得した結果。僕の住む立川がまったく出てこず、八王子ばかりとはこれいかに。

マッシュアップのために

まずはこちらでAPIキーの登録をしました。メアドを入力するだけです。
次に、欲しいAPIのURLを探します。ホットペッパービューティの場合はここにAPIがいくつもあるので、このURLを使えばいいことがわかります。
そしてFlashなり何なりで開発します。AS3では、まず適当にインポートして、URL、キー、検索軸(&small_area=X027 とか &kodawari=parma とか)を設定し、URLLoaderでURLRequestを処理して、イベントコンプリートハンドラで得たXMLデータを弄る、という具合です。

ソース

import fl.containers.ScrollPane
Security.loadPolicyFile("http://webservice.recruit.co.jp/beauty/crossdomain.xml");
var url:String ="http://webservice.recruit.co.jp/beauty/salon/v1/?key=";
var key:String ="KEYをいれてね!!";
var service:String = "&small_area=X027";
var dataXML:XML;
function loadXML():void {
var _url:URLRequest = new URLRequest(url+key+service);
var ldr = new URLLoader();
ldr.addEventListener(Event.COMPLETE,completeHandler);
ldr.load(_url);
}
function completeHandler(e:Event):void {
dataXML = new XML(e.target.data);
namespace ns= 'http://webservice.recruit.co.jp/beauty/'
use namespace ns;
for(var i:uint=0;i

重要なのは、XMLを呼んだあとでXMLネームスペース(xmlns)を指定すること。でないとE4Xでアクセスできません(dataXML.children[0].child...としてアクセスできるけど、dataXML.salon.nameみたいなアクセス方法はネームスペースを指定してないとダメっていうこと)。

意味ないけど今回のソースはこちらね(CS3形式 .flaファイル)。

この記事には、カテゴリ AS3 タグは , がつけられています。

マッシュアップのための第一歩:FlashでAPIからXMLを呼んだときはxmlnsに注意する への1件のフィードバック

  1. whaison より:

    >重要なのは、XMLを呼んだあとでXMLネームスペース(xmlns)を指定すること。
    >でないとE4Xでアクセスできません(dataXML.children[0].child…としてアクセスできるけど、
    >dataXML.salon.nameみたいなアクセス方法はネームスペースを指定してないとダメっていうこと)。
    のところが
    大変役に立ちました。
    ありがとうございました。