![]() |
|
||||||||||
|
|||||
|
Guest
Сообщений: n/a
|
Нужно последовательно заполнить несколько XML объектов, если заранее известны пути к каждому из них. Пока использую для этого такой алгоритм:
CI=0; //переменная которая хранит номер текущего хмл buildXML(aXMLpath[CI]);// где aXMLpath = [“path1","path2",..,”pathN”];- массив с адресами каждого из хмл. function buildXML(path:String):void{ var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.TEXT; loader.addEventListener (Event.COMPLETE, xmlLoader); loader.load(new URLRequest(path)); } function xmlLoader(event:Event):void{ var xmlObj = [aXMLname[CI]];// где aXMLname = [xml1,xml2,..,xml3]; - массив с сылками на каждый хмл-объект xmlObj = new XML(event.target.data); switch(CI){//дальнейшая работа с заполненным хмл-обектом case 0: //code1 case 1: //code2 //и т.д. } if(++CI<aXMLpath.length) buildXML(aXMLpath[CI]);//если еще заполнены не все хмл } Подскажите пожалуйста, как решить эту задачу более грамотно. Например, чтобы алгоритм имел вид for(var i:int=0;i< aXMLpath.length;i++){ buildXML(i); } function buildXML(num:int){ var xmlObj = [aXMLname[num]]; xmlObj = new XML(get_xml(aXMLpath[num])); switch(num){ case 0: //code1 case 1: //code2 //и т.д. } } function get_xml(path:String):String { //Загрузить хмл в xmlData return xmlData.toString(); } ![]() |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 93
|
Можно делать как вы, это нормально. Но мне обычно лень и я использую BulkLoader.
|
|
|||||
|
Guest
Сообщений: n/a
|
Спасибо. Скачал BulkLoader - судя по всему удобная штука, во только что-то пока не получается воспользоваться(. Делают так:
import br.com.stimuli.loading.BulkLoader; //////////////////////////////////// var loader:BulkLoader = new BulkLoader("main"); loader.add("data/catalog.xml"); loader.start(); //var mXML:XML = loader.getLoader("main").getXML("data/catalog.xml");//ERROR: 1061: Call to a possibly undefinde method getLoader through a reference with static type br.com.stimuli.loading:BulkLoader var mXML:XML = loader.getXML("data/catalog.xml"); trace(mXML);//ничего не выводит. |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 93
|
var xmlPaths:Array = ["1.xml", "2.xml", "3.xml"]; var loader:BulkLoader = new BulkLoader("myXmlLoaderName"); for(var i:int = 0; i < xmlPaths.length; i++) { loader.add(xmlPaths[i], {id:("xml_"+i)}); } loader.addEventListener(BulkProgressEvent.COMPLETE, completeHandler); loader.start(); function completeHandler(e:BulkProgressEvent):void { var myXML:XML = loader.getXML("xml_0"); } |
|
|||||
|
Guest
Сообщений: n/a
|
Большое спасибо, FlashRabbit.
Кстати, стал проводить соревнования между булкером и своим методом и обнаружил интересную статистику: Когда загружается только один файл они работают почти одинаково не зависимо от размера файла разница 1 милисекунда (например Bulk > 70 vs My > 71) При загрузке двух файлов мой метод резко тормозит (Bulk > 80 vs My > 231) проверял раз десять, цифры немного колеблются, но соотношение остается. При трех файлах булк тоже начинает работать медленнее (Bulk > 218 vs My > 317) При четырех (Bulk > 232 vs My > 403). Как это булкеру удалось меня обставить не понятно))) Но есть еще один нюанс, первый файл весит много (18 Кб) а грузится быстро. Остальные три файла весят коло 500 байт, но почему то начинаются резкие разбежки во временем (в моем методе между загрузкой одного и двух файлов, а у булкера между двумя и тремя)??? |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|