旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

HashToXML.as

2008年1月10日

続きあります、コチラをどうぞ。
ActionScript3でXML関連は充実していると聞いたけど
ハッシュ(連想配列)とXMLオブジェクトの変換は出来ないらしい・・・ナンテコッタイ!
んー、JSON慣れしていると不便だなぁ ということで
まずは、ハッシュ→XMLオブジェクト をしてくれるクラスを作ってみました。

[HashToXML.as]

凄まじく誰かも作ってるような気がするけど、気にしないッ!

【使用例】
hash変数をXMLオブジェクトに変換して
toXMLStringメソッドの出力でXMLへの変換を確認します。

ということで変換

var hash:Object = {
root: {
str: "STR"
,num: 123
,bool: false
,nl: null
,ud: undefined
,arr: [11,22,33]
,obj: {a:1, b:2, c:3}
,nested: {
x: 1
,y: [111, 222, {sss:444}]
,z: {zz:[9, 99]}
}
,blankArr: []
,oneElemArr: ["only one"]
}
};
var xml:XML = HashToXML.toXML(hash);
trace(xml.toXMLString());

んで出力

<root>
<blankArr></blankArr>
<nl></nl>
<oneElemArr>only one</oneElemArr>
<num>123</num>
<bool>false</bool>
<ud></ud>
<nested>
<x>1</x>
<y>111</y>
<y>222</y>
<y>
<sss>444</sss>
</y>
<z>
<zz>9</zz>
<zz>99</zz>
</z>
</nested>
<arr>11</arr>
<arr>22</arr>
<arr>33</arr>
<str>STR</str>
<obj>
<c>3</c>
<a>1</a>
<b>2</b>
</obj>
</root>

要素の順番が無茶苦茶なのは、ASのforがそういう仕様だから・・・。
あ、でも、リストになってるところは順番通りです。

arguments.calleeって言いたいが為に無理矢理それを使ってたら
最近少し再帰処理に慣れてきた気がする