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