Показать сообщение отдельно
Старый 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");
			}
		};
	}
}