配列、オブジェクトをXMLへ

by mtok forked from flash on 2009-11-27 (diff: 35)
♥2 | Line 56 | Modified 2009-11-30 22:59:23 | MIT License
play

ActionScript3 source code

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

<?xml version="1.0" encoding="utf-8"?>
<!-- forked from mtok's flash on 2009-11-27 -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="appCompHandler()">
    <mx:Script>
    <![CDATA[
    import mx.events.FlexEvent;
    private function appCompHandler():void{
        println("xmlの操作 配列やオブジェクトをXMLに、バインディング演算子'{}'を使うと簡単にXMLを生成できるよ。");
        
        var aryData:Array = ["1月","2月","3月","4月","5月","6月",
                             "7月","8月","9月","10月","11月","12月",];
        println("配列をXMLへ");
        var x:XML;
        x = arryToXML(aryData);
        println(x.toXMLString());
        
        println("オブジェクトをXMLへ");
        var obj:* = {firstname:"bar", lastname:"foo", address:"Japan"};
        x = objectToXML(obj);
        println(x.toXMLString());
    }
    
    private function arryToXML(ary:Array):XML{
        var xml:XML = <array></array>;
        var i:int;
        var len:int = ary.length;
        for(i = 0; i < len; i++){
            xml.appendChild(<element>{ary[i]}</element>);
        }
        return xml;
    }
    
    private function objectToXML(obj:*):XML{
        var xml:XML = <object></object>;
        var index:String;
        for( index in obj){
            xml.appendChild(<{index}>{obj[index]}</{index}>);
        }
        return xml;
    }
    private function print(str:String):void{
        taOutput.text = taOutput.text.concat(str);    
    }
    private function println(str:String):void{
        print(str);
        print("\n");    
    }
    
    //removeChildだと名前が被る。
    private function deleteChild(node:XML):XML{
        var p:XML;
        
        if(node != null){
            if( (p = node.parent()) ){
                delete p.children()[node.childIndex()];
            }
        }
        return node;
    }
    ]]>
    </mx:Script>
    <mx:TextArea width="100%" height="100%" id="taOutput" ></mx:TextArea>
</mx:Application>

Forked