配列、オブジェクトをXMLへ
forked from flash on 2009-11-27 (diff: 35)
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>