Home > ActionScript 3.0 > [XML]タグにxmlns属性があると空白が返る[ActionScript 3.0]

[XML]タグにxmlns属性があると空白が返る[ActionScript 3.0]

ホットペーパーのAPIを叩いて、返ってきたXMLを弄ろうと思い、
URLLoaderをつかってみた。

そこまではよかったんだけど、ノードを取ろうとすると空白が返ってくる...

この問題で30分くらいはまったので、メモとして残しておきます。
どうやら、読み込むXMにxmlns属性が付与されていると、ActionScriptではネームスペースを厳密に指定しないと取得できない。
なお、ここでのネームスペースはXMLノードに対してのものである。
以下FlashCS3ヘルプからの引用

XML オブジェクトの名前空間 : 名前空間により名前空間接頭辞と、名前空間を識別する URI (Uniform Resource Identifier) を関連付けます。接頭辞は、XML オブジェクト内の名前空間を参照する場合に使用されるストリングです。接頭辞が未定義の場合、XML がストリングに変換されたときに接頭辞が自動的に生成されます。

で、この名前空間があるおかげで、同一のノード名を扱うことができる代わりに、参照する際に特殊な指定をしなければならない。
このときの指定方法は、クラスや変数、メソッドで扱う場合と同じ:(コロン)を用いる

private function completeHandler(e:Event):void {
    _xml = new XML(urlLoader.data)
    var ns:Namespace = new Namespace("http://webservice.recruit.co.jp/HotPepper/")
    for each(var _target in _xml.ns::shop.ns::name) {
        trace(_target.text())
    }
}

xmlをURLLoaderで読み込み、COMPLETEイベントで完了後、XMLオブジェクトを生成する。ここまでは問題ない。
次に必要になってくるのが、Namespaceの生成。トップレベルクラスなので、importする必要はない。
ホットペッパーのAPIで使われているxlmnsは"http://webservice.recruit.co.jp/HotPepper/"だったので、これをいれる。

次に参照だが、通常_xml.shopのように、ノードをつなげるところを、_xml.ns::shopのように、ネームスペースをクッションさせてやる
このようにすることで、きちんと取得することができる。

Summer Camp 2010 野中文雄のActionScript 3.0による 三次元表現

無料  ActionScript 3.0による 三次元表現 in アップルストア 銀座

フィジカルコンピューティング ラボラトリー

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Trackbacks:0

TrackBack URL for this entry
http://xingxx.com/mt/mt-tb.cgi/10
Listed below are links to weblogs that reference
[XML]タグにxmlns属性があると空白が返る[ActionScript 3.0] from xingxx

Home > ActionScript 3.0 > [XML]タグにxmlns属性があると空白が返る[ActionScript 3.0]

Search
Feeds
Tag Cloud

Return to page top