PDA

Просмотр полной версии : создание нескольких XML


Flashechka
25.01.2008, 19:29
всем привет, у меня проблемка с подгрузкой нескольких XML поможите?
need_XML = new XML();
need_XML.ignoreWhite = true;
need_XML.load("http://www.my_domain.ru/"+html_xml[i]);
need_XML.onLoad = function(i) {
if (i) {
information();
}
};
у есть несколько XML... (html_xml1, html_xml2, html_xml3...)
надо для каждой и прировнять к need_XML (need_XML1, need_XML2....)
как это сделать правильно?

looptroop
26.01.2008, 01:58
не понятно. ты хочешь подгрузить три разных хмл файла и создать один хмл объект или несколько хмл объектов для каждого хмл сорса.

я думаю что в любом случае надо поочереди подгружать каждый файл с хмл-ем. и тоже самое про хмл объекты, которые у тя получаются.

Flashechka
26.01.2008, 09:38
мне надо чтоб need_XML1 = html_xml1,need_XML2 = html_xml2, need_XML3 = html_xml3.....
дело в том что у меня всегда разное количество "html_xml" и поэтому придётся каждый раз переделывать создание нужного количества "need_XML", а хотелось чтобы он сам создовал ровно столько, сколько есть "html_xml"(для проверки у меня их покачто 10)

looptroop
26.01.2008, 14:56
проходи циклом по твоим "html_xml", как я понял это массив. И динамически создавай нужные тебе need_XML... вот и все.

Flashechka
26.01.2008, 15:05
looptroop я понимаю что не блещу умом в АС, но еслибы мне нужен был такой наводящий ответ я бы обратилась в раздел Ас 2.0 для профессионалов, а т.к. незнаю всех действий обращаюсь сюда.. покажи пожалуйста этот массив который будет выполняться определённое количество раз...

wvxvw
26.01.2008, 18:07
import mx.utils.Delegate;
//
var address_arr:Array = ['test1.xml', 'test2.xml', 'test3.xml']; // Список адресов с которых нужно получать ХМЛ файлы.
var xml_arr:Array = []; // Массив, в котором будут хранится полученные ХМЛи
var read_index:Number = 0; // Переменная, которую мы будем инкрименировать с каждым успешно загруженным ХМЛем
var loader_xml:XML = new XML(); // ХМЛ объект, который будет грузить ХМЛ файлы
loader_xml.ignoreWhite = true; // желательно всегда включать, иначе знаки пробелов, табуляции, обрыва строки и т.п.
// будут также интерпретироваться как узлы
loader_xml.onLoad = Delegate.create(this, onLoadHandler); // Назначаем функцию-обработчик для события загрузки
function onLoadHandler(ok:Boolean):Void { // Функция-обработчик
if (ok && read_index<=address_arr.length) { // Если есть еще что грузить, и загрузка завершилась успешно -- грузим дальше
xml_arr.push(loader_xml.cloneNode(true)); // Создаем дубликат загруженного ХМЛя и помещаем его в массив
if (read_index<address_arr.length) { // Если остались еще незагруженные ХМЛи -- грузим следующий
loader_xml.load(address_arr[read_index]);
}
read_index++; // "Записываем", что ХМЛ загружен
if (read_index>address_arr.length) { // Если все ХМЛи загружены -- выводим в окно вывода информацию о них
trace('all XML files successfuly loaded!');
trace('---------------------------------');
trace(xml_arr.join('\r---------------------------------\r'));
}
} else {
trace('download failied!'); // Если ХМЛ не загрузился -- предпинимаем какие-нибудь меры тут.
}
}
onLoadHandler(true); // первый запуск загрузки

Flashechka
26.01.2008, 18:11
спасибо большое, но можешь отредактировать и вписать что, куда, и зачем?

wvxvw
26.01.2008, 18:18
спасибо большое, но можешь отредактировать и вписать что, куда, и зачем?
Хм... ок =) ща

Flashechka
26.01.2008, 22:32
спасибо большое.. и у меня ещё вопросик..
скажем у меня XML грузится так:
loader_xml(http//:www.syte.ru/html_xml.xml)
как мне прописать в "trace", чтобы этот адрес высветился?

wvxvw
26.01.2008, 23:42
import mx.utils.Delegate;
//
var address_arr:Array = ['test1.xml', 'test2.xml', 'test3.xml'];
var xml_arr:Array = [];
var read_index:Number = 0;
var loader_xml:XML = new XML();
loader_xml.ignoreWhite = true;
loader_xml.onLoad = Delegate.create(this, onLoadHandler);
function onLoadHandler(ok:Boolean):Void {
if (ok && read_index<=address_arr.length) {
xml_arr.push(loader_xml.cloneNode(true));
if (read_index<address_arr.length) {
trace('from URL: '+address_arr[read_index]);
loader_xml.load(address_arr[read_index]);
}
read_index++;
if (read_index>address_arr.length) {
trace('all XML files successfuly loaded!');
trace(xml_arr.join('\r---------------------------------\r'));
}
} else {
trace('download failied!');
}
}
onLoadHandler(true);