![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2006
Сообщений: 25
|
Такая проблема, флэш обращается к пшп скрипту, который возвращает ему XML-ку, в этой XML-ки ссылки на другие XML-ки и нужные данные. С помощью дополнительной оболочки я сохраняю XML-ки на хард драйве. Забираю из основной XML нужные данные, и запускаю функцию обработки других XML-ек линки до которых я предварительно сохранил в массив.
Проблема в том, что сразу же не получается обработать "другие" XML. Ради чистоты эксперемента, я сделал две кнопки: На одну назначил получение основной XML, запись в массив линков к остальным XML, и выдергивание остальной нужной информации. На вторую назначил запуск функции обработки XML-ек сохраненных на харде. Получается, что когда я жму на первую кнопку основные данные обрабатываются, XML-ки сохраняются. Всё отлично. Тут же жму на вторую, и обрабатывается только одна-две XML-ки, жму ещё обработалось уже 4-5, если подождать секунд 10 и ещё раз нажать, то отпарсится всё. Как от этого избавится? Неизвестно сколько времени понадобится на других компьютерах, для того чтобы "подготовились" все XML-файлы. Заранее хочу извинится за бардак в коде, после многочисленных изменений и 10-ти часов работы, аккуратность уходит на второй план. function XML_update(Link:String) {
_root.xArray = new Array();
var myXMLr:XML = new XML();
myXMLr.ignoreWhite = true;
//
myXMLr.onLoad = function(success) {
mApplication.trace("OK");
if (success) {
//Категории
count_of_categories = this.firstChild.childNodes[0].attributes.count_of_categories;
for (var i:Number = 0; this.firstChild.childNodes[0].childNodes[i] != undefined; i++) {
category_name = this.firstChild.childNodes[0].childNodes[i].attributes.name;
mFile.createFolder(contentFolder+category_name);
category_count = this.firstChild.childNodes[0].childNodes[i].attributes.count_of_products;
sub_category_of = this.firstChild.childNodes[0].childNodes[i].attributes.sub_category_of;
count_of_sub_categories = this.firstChild.childNodes[0].childNodes[i].attributes.count_of_sub_categories;
}
//Новости
for (var m:Number = 0; this.firstChild.childNodes[2].childNodes[m] != undefined; m++) {
DataNews = this.firstChild.childNodes[2].childNodes[m].attributes.date;
news_title = this.firstChild.childNodes[2].childNodes[m].attributes.title;
Link = this.firstChild.childNodes[2].childNodes[m].attributes.link;
News = this.firstChild.childNodes[2].childNodes[m].childNodes[0].nodeValue;
}
//Продукты
count_of_products = this.firstChild.childNodes[1].attributes.count_of_products;
for (var j:Number = 0; this.firstChild.childNodes[1].childNodes[j] != undefined; j++) {
id = this.firstChild.childNodes[1].childNodes[j].attributes.ID;
date = this.firstChild.childNodes[1].childNodes[j].attributes.date;
value = this.firstChild.childNodes[1].childNodes[j].attributes.value;
value = value.substring(0, value.length-4);
category = this.firstChild.childNodes[1].childNodes[j].attributes.category;
pad_url = this.firstChild.childNodes[1].childNodes[j].attributes.pad_url;
mApplication.downloadFile(xmlFolder+j+".xml", pad_url);
mApplication.trace("PAD URL INET = "+pad_url);
img_url = this.firstChild.childNodes[1].childNodes[j].attributes.img_url;
_root.xArray.push({value:value, category:category, pad_url:Lin, img_url:img_url, date:date});
}
}
test();
return;
};
myXMLr.load(Link);
}
///////////////////////////////////////////////////
function test() {
delete (_root.XML_update);
for (l=1; l<68; l++) {
li = "E:\\Documents and Settings\\urbanman\\Application Data\\EleFun Desktops\\Desktop Manager\\XML\\"+l+".xml";
value = _root.xArray[_global.cc].value;
var productXML:XML = new XML();
productXML.ignoreWhite = true;
productXML.load(li);
trace("aaaa = "+li);
productXML.onLoad = function(successNew) {
if (successNew) {
//Обработка XML
Name = this.firstChild.childNodes[4].childNodes[0].childNodes[0].nodeValue;
mApplication.trace("Name = "+Name);
trace("Name = "+Name);
Type = _root.xArray[_global.cc].category;
Link_file = this.firstChild.childNodes[6].childNodes[0].childNodes[0].childNodes[0].nodeValue;
Link_txt = escape(this.firstChild.childNodes[5].childNodes[0].childNodes[3].childNodes[0].nodeValue);
mApplication.trace("ID ="+mApplication.downloadFile(contentFolder+category+"\\"+value+".jpg", _root.xArray[_global.cc].img_url));
Link_jpg = contentFolder+category+"\\"+value+".jpg";
Link_buy = this.firstChild.childNodes[9].childNodes[2].childNodes[0].nodeValue;
Version = this.firstChild.childNodes[4].childNodes[1].childNodes[0].nodeValue;
Enter_date = _root.xArray[_global.cc].date;
Txt_preview = escape(this.firstChild.childNodes[5].childNodes[0].childNodes[5].childNodes[0].nodeValue);
Cost = this.firstChild.childNodes[4].childNodes[14].childNodes[0].nodeValue;
Sr = this.firstChild.childNodes[4].childNodes[5].childNodes[0].nodeValue;
Top = "true";
Program_type = this.firstChild.childNodes[4].childNodes[6].childNodes[0].nodeValue;
Full_size = this.firstChild.childNodes[4].childNodes[16].childNodes[2].childNodes[0].nodeValue;
Action = this.firstChild.childNodes[4].childNodes[7].childNodes[0].nodeValue;
} else {
trace("ERROR");
}
};
}
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ужасный код. Переписать заново! И проблем не возникнет.
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 588
|
Странно(сумбурно), зачем загружать XML, затем копировать его в массив, после удалять, создавать новый, в него пихать элементы массива, и уже потом только их использовать... (Переминаем смятую-перемятую бумагу...). В приведенном коде действительно трудно разобраться(поверхностным взглядом)... Сделай проще...
З.Ы. Почему бы всё в один XML не запихнуть(?)... |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 25
|
Цитата:
Массив создаётся потому что, в основной XML-ке помимо линков есть ещё и дополнительная инфа к каждой XML-ке находящихся по этому самому пути. Т.е. грубо говоря первая XML мне даёт: Линки, и некоторую инфу о файле который находится по этому Линку. Которые я пишу в массив. Далее я циклом рабираю остальные XML. По сути, даже не важно что за код я выложил, это был черновик, который прекрасно работает если парсировать по линкам с инета, но это отнимает больше времени. Если сразу всё скачать, то парсируется всё практически мгновенно, но вот с такой непонятной задержкой в 7-10 секунд, между обработкой основной XML, и вторичных. |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|