Apache flex 在源于XML文件的arraylist中循环

Apache flex 在源于XML文件的arraylist中循环,apache-flex,Apache Flex,我正在读取一个XML文件,该文件如所附图像所示。我正在使用URLEQUEST阅读它,它工作正常。接下来我要做的是用所有“项目”节点填充arraylist。我正在将XML转换为数组,但源代码显示项目位于[0]节点中,而arraylist的长度为1 这样做的正确方法是什么,以便我可以循环遍历arraylist中的所有项目 private var xmlParameters:XML private var xmlStoryMap:XMLList; protected function applic

我正在读取一个XML文件,该文件如所附图像所示。我正在使用URLEQUEST阅读它,它工作正常。接下来我要做的是用所有“项目”节点填充arraylist。我正在将XML转换为数组,但源代码显示项目位于[0]节点中,而arraylist的长度为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;
}

通过项目的循环

for each(var projectXML:XML in  xmlParameters.projects.project)
{
     // Do operation
}

如果不想出现循环问题,请使用此选项

        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);
        }

是否真的有必要将XML对象转换为字符串,然后将其解析回对象?更改convertXMLtoArray参数类型并传递XML,或者(更好的做法是)在一个函数中完成这一切,这不是很明智吗。我会用绳子。是否在一个函数中实现所有功能是开发人员的问题。“ConvertXMLToArray”在某些情况下可以重用。我已经更正了我的答案,谢谢你的提示!考虑使用XMLListCype