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

为了循环浏览项目,

for each(var projectXML:XML in  xmlParameters.projects.project)
{
     // Do operation
}
于 2013-02-07T09:24:15.893 回答
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 回答