[AS]XMLで要素数が何個あるかわからないデータを取得する時の方法 (for each ( in )の使い方)
フレームアクションでこんな感じ。
var xml:XML =
<sampleXML>
<test>まるいち</test>
<test>まるに</test>
<test>まるさん</test>
<test>まるよん</test>
<test>まるご</test>
</sampleXML>;
trace(xml);
var xmlArray:Array = new Array();
var sampleXMLList:XMLList = xml.test;
//配列にtest要素を突っ込む
for (var i:uint = 0; i< sampleXMLList.length(); i++) {
xmlArray.push(xml.test[i]);
}
//配列の中身を確認
for (i = 0; i < xmlArray.length; i++) {
trace("xmlArray その1 : "+xmlArray[i]);
}
//配列を空にする。
xmlArray = [];
//配列にtest要素を突っ込む
for each (var container:Object in xml.test) {
xmlArray.push(container);
}
//配列の中身を確認
for (i = 0; i < xmlArray.length; i++) {
trace("xmlArray その2 : "+xmlArray[i]);
}
プレビュー時の出力はこんな感じ
xmlArray その1 : まるいち
xmlArray その1 : まるに
xmlArray その1 : まるさん
xmlArray その1 : まるよん
xmlArray その1 : まるご
xmlArray その2 : まるいち
xmlArray その2 : まるに
xmlArray その2 : まるさん
xmlArray その2 : まるよん
xmlArray その2 : まるご
注意するのは
Arrayの中身を数えるのは、Array.length
XMLListの中身を数えるのは、XMLList.length();
微妙に違うところ。
あとfor each (in)分を使えば、データの数がわからなくとも、データがあるだけループさせられる。
Tweet