[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