AS3 XMLにネームスペースがあると普通には値が取得できない2

色々実験して、一応、正しい(?)対処方法を発見。
なんかXMLが大嫌いになった僕がいました。

amazon apiの場合、ネームスペースが

xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05"

なので、

ns = new Namespae("http://webservices.amazon.com/AWSECommerceService/2005-10-05")

var isValid = xml.ns::Items.ns::Request.ns::IsValid

という風に、どうやらE4Xでエレメント毎に「ネームスペースの参照 ::」をつけてやらないといけないらしい。

どういうことかっていうと、AS3でXMLノードを他の関数とかに渡す場合には、一緒にネームスペースも渡してやらんと、関数で値が取得できないんじゃないか、ということ。最悪、XMLの種類毎にパーサ用意して随時オブジェクト化するように心がけないといけないかもしれない。

っていうか、パース前にストリング弄くってネームスペース削るほうが絶対楽だなぁ・・・・
こういう場合、removeNamespaceとか使って、ネームスペース殺せばいいんでしょうかね。

教えてエロイ人。

コメント / トラックバック 1 件

  1. ledsunの日記 より:

    [Flex]名前空間付きのXML

    Flex2からFlex3に移行する際に名前空間の設定されたXMLの取り扱いで注意が必要です。 XMLの取り扱い変更 XMLのノードを取得するにはActionScriptでは以下のようなコードを書きます。 var xml:XML =…

コメントをどうぞ