0

添付の画像に示されている XML ファイルを読み込んでいます。私は正しく動作する URLRequest を使用してそれを読んでいます。次にやりたいことは、すべての「プロジェクト」ノードを配列リストに入力することです。XML を配列に変換していますが、ソースはプロジェクトが [0] ノードにあり、配列リストの長さが 1 であることを示しています。

ここに画像の説明を入力 ここに画像の説明を入力

arraylist 内のすべてのプロジェクトをループできるように、これを行う適切な方法は何ですか?

private var xmlParameters:XML
private var xmlStoryMap:XMLList;

protected function application1_creationCompleteHandler(event:FlexEvent):void
{
    var params:Object;
    var xmlLoader:URLLoader = new URLLoader();

    xmlLoader.addEventListener(Event.COMPLETE, xmlloader_onComplete_Handler);
    xmlLoader.addEventListener(IOErrorEvent.IO_ERROR,IOError_handler);

    xmlLoader.load(new URLRequest("myXML.xml"));    
}

protected function xmlloader_onComplete_Handler(event:Event):void
{
    var loader:URLLoader = URLLoader(event.target)

    xmlParameters = new XML(loader.data);
    xmlStoryMap = xmlParameters.projects;

    initializeMap();
}

protected function initializeMap():void
{
    var testlist:ArrayList = new ArrayList();
    testlist.source = convertXMLtoArray(xmlStoryMap.project);

}

private function convertXMLtoArray(file:String):Array
{
    var xml:XMLDocument = new XMLDocument(file);
    var decoder:SimpleXMLDecoder = new SimpleXMLDecoder;
    var data:Object = decoder.decodeXML(xml);
    var array:Array = ArrayUtil.toArray(data);

    return array;
}
4

2 に答える 2

0

ループの問題が発生したくない場合は、代わりにこれを使用してください

        protected function xmlloader_onComplete_Handler(event:Event):void
        {
            var loader:URLLoader = URLLoader(event.target)
            var xmlString:String = loader.data;

            initializeMap(xmlString);
        }

        protected function initializeMap(xmlString:String):void
        {
            var testlist:ArrayList = new ArrayList();
            testlist.source = convertXMLtoArray(xmlString);
        }

        private function convertXMLtoArray(xmlString:String):Array
        {
            var xmlDoc:XMLDocument = new XMLDocument(xmlString);
            var decoder:SimpleXMLDecoder = new SimpleXMLDecoder();
            var data:Object = decoder.decodeXML(xmlDoc);

            return ArrayUtil.toArray(data.storymap.projects.project);
        }
于 2013-02-07T11:11:43.103 に答える
0

プロジェクトをループするには、

for each(var projectXML:XML in  xmlParameters.projects.project)
{
     // Do operation
}
于 2013-02-07T09:24:15.893 に答える