MXMLTest05 External XML Read Test (取得した外部XMLから指定したデータを取り出す)

by siouxcitizen forked from MXMLTest04 External XML Read Test (diff: 22)
♥2 | Line 44 | Modified 2009-04-18 13:22:37 | MIT License
play

ActionScript3 source code

/**
 * Copyright siouxcitizen ( http://wonderfl.net/user/siouxcitizen )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/xu7N
 */

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute" width="500" height="500" backgroundColor="#FFFFFF">
    <mx:Script>
        <![CDATA[
            //Yahooショッピングから"出石そば"で検索した結果(XML)をテキストエリアに表示
            private var query:String = "出石そば";//検索キーワード 
            private var URL:String = "http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?appid=uQ_E1kmxg64.0fo1fkMwTnvcEmBn.foaHDXp0MF8WvUXD3jQcDaDIAuC0b6zRFmh3BT2umN6&query=" + escapeMultiByte(query); 
            private var loader:URLLoader;
            private var xmlData:XML;
            //↓ 以下、今後の自分へ。。。  相当詰まった。。。
            //クロスドメイン処理用crossdomain.xml、Yahooの場合は既に準備してくれている。。。
            //外部XMLデータ使用時は名前空間の設定を忘れないように。。。
            private var ns:Namespace = new Namespace("urn:yahoo:jp:itemSearch");
                    
            private function testTextArea():void {
                //外部XML処理中はボタンを不活性化
                btnTest.enabled = false; 
                
                var request:URLRequest = new URLRequest(URL);
                request.url = URL;
                loader = new URLLoader();
                loader.addEventListener(Event.COMPLETE, completeHandler);
                
                try {
                    loader.load(request);
                } catch (error:Error) {
                    trace("Unable to load requested document.");
                }
                
            }
            
            private function completeHandler(event:Event):void {
                xmlData = new XML(loader.data);
                default xml namespace = ns; //名前空間設定
                //指定したデータをXMLから取り出して表示           
                txtData.text += "\n\n\商品タイトル&URLデータ表示 -> ";
                for each(var element:Object in xmlData.Result.Hit){
                    var titleName:String = element.Name;
                    var imgURL:String = element.Image.Small;
                    var linkURL:String = element.Url;
                    var appdTxt:String = "\n\nタイトル: " + titleName
                                       + "\n画像URL: " + imgURL
                                       + "\nリンク先URL: " + linkURL;
                    txtData.text += appdTxt;       
                }
                //btnTest.enabled = true; //外部XML処理後にボタンを活性化、予定。。。              
            }
        ]]>
    </mx:Script>
    <mx:Button id="btnTest" click="testTextArea();" x="10" y="10" label="ボタン" enabled="true"/>
    <mx:TextArea id="txtData" x="10" y="46" width="450" height="400">
        <mx:text>
            <![CDATA[取得した外部XMLから指定したデータを取り出すテスト]]>
        </mx:text>
    </mx:TextArea>
</mx:Application>

Forked