Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.07.2006, 20:15
UrbanMan вне форума Посмотреть профиль Отправить личное сообщение для UrbanMan Найти все сообщения от UrbanMan
  № 1  
Ответить с цитированием
UrbanMan
 
Аватар для UrbanMan

Регистрация: Jan 2006
Сообщений: 25
По умолчанию проблема с подгрузкой XML-ек

Такая проблема, флэш обращается к пшп скрипту, который возвращает ему 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");
			}
		};
	}
}

Старый 15.07.2006, 22:29
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ужасный код. Переписать заново! И проблем не возникнет.

Старый 16.07.2006, 00:31
sem1313 вне форума Посмотреть профиль Отправить личное сообщение для sem1313 Найти все сообщения от sem1313
  № 3  
Ответить с цитированием
sem1313

Регистрация: Feb 2006
Сообщений: 588
Странно(сумбурно), зачем загружать XML, затем копировать его в массив, после удалять, создавать новый, в него пихать элементы массива, и уже потом только их использовать... (Переминаем смятую-перемятую бумагу...). В приведенном коде действительно трудно разобраться(поверхностным взглядом)... Сделай проще...

З.Ы. Почему бы всё в один XML не запихнуть(?)...

Старый 16.07.2006, 11:12
UrbanMan вне форума Посмотреть профиль Отправить личное сообщение для UrbanMan Найти все сообщения от UrbanMan
  № 4  
Ответить с цитированием
UrbanMan
 
Аватар для UrbanMan

Регистрация: Jan 2006
Сообщений: 25
Цитата:
Сообщение от sem1313
Странно(сумбурно), зачем загружать XML, затем копировать его в массив, после удалять, создавать новый, в него пихать элементы массива, и уже потом только их использовать... (Переминаем смятую-перемятую бумагу...). В приведенном коде действительно трудно разобраться(поверхностным взглядом)... Сделай проще...

З.Ы. Почему бы всё в один XML не запихнуть(?)...
всё в один XML сделать не получится, потому что этими XML-ками уже давно и успешно пользуются сайты и много чего ещё.

Массив создаётся потому что, в основной XML-ке помимо линков есть ещё и дополнительная инфа к каждой XML-ке находящихся по этому самому пути.

Т.е. грубо говоря первая XML мне даёт:
Линки, и некоторую инфу о файле который находится по этому Линку. Которые я пишу в массив. Далее я циклом рабираю остальные XML.

По сути, даже не важно что за код я выложил, это был черновик, который прекрасно работает если парсировать по линкам с инета, но это отнимает больше времени. Если сразу всё скачать, то парсируется всё практически мгновенно, но вот с такой непонятной задержкой в 7-10 секунд, между обработкой основной XML, и вторичных.

Создать новую тему Ответ Часовой пояс GMT +4, время: 06:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 06:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.