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

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

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

Регистрация: Apr 2002
Адрес: СПб
Сообщений: 288
По умолчанию поиск в XML

Есть 10 xml-ей.
Необходимо в цикле найти вхождение определенного слова во всех xml.
Подскажите, пожалуйста, как это организовать?

ЗЫ. такой код не успевает подгрузить значения из xml во flash

Код:
stop();
_root.region = new Array("1.xml", "2.xml", "3.xml", ..., "10.xml");
for (var index in _root.region) {
	prepareXML(_root.region[index]);
}
prepareXML = function (file) {
	myXML = new XML();
	myXML.ignoreWhite = true;
	myXML.load(file);
	myXML.onLoad = function(success) {
		if (success == true) {
                                 грузим данные в массив и проверяем совпадение
                          }
             }
}
__________________
Хватит клавиши топтать... :mad:


Последний раз редактировалось as_68; 17.01.2006 в 15:06.
Старый 17.01.2006, 15:00
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 2  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
в ссмысле 10 файлов?

Старый 17.01.2006, 15:07
as_68 вне форума Посмотреть профиль Отправить личное сообщение для as_68 Найти все сообщения от as_68
  № 3  
Ответить с цитированием
as_68
 
Аватар для as_68

Регистрация: Apr 2002
Адрес: СПб
Сообщений: 288
Отредактировал исходник
__________________
Хватит клавиши топтать... :mad:

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

Регистрация: Nov 2003
Адрес: Север
Сообщений: 244
А слабо из обработчика myXML.onLoad после проверки на совпадение вызывать функцию? Для перебора всех значений массива заведи переменную, хранящую текущий индекс.
__________________
Scio me, nihil scire.

Старый 17.01.2006, 15:39
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
как ты ставишь вопрос ('найти вхождение определенного слова '), то так
Код:
prepareXML = function (file) {
	myXML = new XML();
	myXML.ignoreWhite = true;
	myXML.load(file);
	var f=file;
	myXML.onLoad = function(success) {
		if (success == true) {
			var n=this.toString().indexOf('target')
			if(n!=-1) trace('слово "target" в позиции #'+ n +' в '+f)
		}
	};
};
_root.region = new Array("1.xml", "2.xml", "3.xml");
for (var index in _root.region) {
	prepareXML(_root.region[index]);
}
зы: сейчас только твой ЗЫ заметил
>>такой код не успевает подгрузить значения из xml во flash
не в том дело, что не успевает подгрузить, а в вызове функции до ее определения:
либо определяй ее как funtion prepareXML(..
либо prepareXML=function(.. , но до вызова..


Последний раз редактировалось silin; 17.01.2006 в 15:46.
Старый 17.01.2006, 16:17
as_68 вне форума Посмотреть профиль Отправить личное сообщение для as_68 Найти все сообщения от as_68
  № 6  
Ответить с цитированием
as_68
 
Аватар для as_68

Регистрация: Apr 2002
Адрес: СПб
Сообщений: 288
2 nyctota
Я так и делаю
в hot - искомое слово
words- массив получаемый из каждого xml-я.
poisk_ar- массив результатов поиска
_root.poisk_ar = new Array();
_root.poisk_ar.push("0");

Код:
myXML.onLoad = function(success) {
  if (success == true) {
	all = myXML.firstChild;
	for (i=0; i<all.childNodes.length; i++) {
       _root.words[i+1] = all.childNodes[i].childNodes[0].nodeValue;
	}
	for (i=0; i<_root.words.length; i++) {
		if (_root.words[i+1] == _root.hot) {
			var pushed:Number = _root.poisk_ar.push([i+1]);
		}
	}
	if (pushed == undefined) {
		trace("не найдено");
	} else {
		for (i=0; i<_root.poisk_ar.length; i++) {
			trace(_root.poisk_ar[i+1])
		}
	}
  }
};
но в результате - undefined
похоже проскакивает раньше чем загружается

2 silin
наверное не так поставил вопорос - найти в узлах xml
__________________
Хватит клавиши топтать... :mad:

Старый 17.01.2006, 17:16
as_68 вне форума Посмотреть профиль Отправить личное сообщение для as_68 Найти все сообщения от as_68
  № 7  
Ответить с цитированием
as_68
 
Аватар для as_68

Регистрация: Apr 2002
Адрес: СПб
Сообщений: 288
Вот пример.
Обрабатывается, почему то, только последний файл.
Вложения
Тип файла: rar 1.rar (4.8 Кб, 44 просмотров)
__________________
Хватит клавиши топтать... :mad:

Старый 17.01.2006, 17:20
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
я бы так сделал
Код:
var region = new Array("1.xml", "2.xml", "3.xml");
var poisk_ar = [];
var toLoad = region.length;//сколько загрузок
var hot = 'second'
for (var index in region) 	prepareXML(region[index]);
function prepareXML(file) {
	var myXML = new XML();
	myXML.ignoreWhite = true;
	myXML.load(file);
	var f = file;
	myXML.onLoad = function(success) {
		if (success == true) {
			var all = myXML.firstChild;
			for (i=0 ; i<all.childNodes.length; i++) {
				var word = all.childNodes[i].childNodes[0].nodeValue.split('\r').join('').split('\n').join('').split(' ').join('');
				if (word == hot) poisk_ar.push({file:f, node:i});
			}
			if (!(--toLoad)) onLoadAll();//когда загрузятся все
		}
	};
}
function onLoadAll() {
	for (var i in poisk_ar) {
		trace('file:'+poisk_ar[i].file+' ; node:'+poisk_ar[i].node)
	}
}

Старый 17.01.2006, 18:52
as_68 вне форума Посмотреть профиль Отправить личное сообщение для as_68 Найти все сообщения от as_68
  № 9  
Ответить с цитированием
as_68
 
Аватар для as_68

Регистрация: Apr 2002
Адрес: СПб
Сообщений: 288
спасибо, попробую.
__________________
Хватит клавиши топтать... :mad:

Старый 17.01.2006, 19:42
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
посмотри в своем коде такие нюансы :
Код:
...
if (success == true) {
			var all = myXML.firstChild;
			for (i=0; i<all.childNodes.length; i++) {
				_root.words[i+1] = all.childNodes[i].childNodes[0].nodeValue;
			}
			for (i=0,pushed=0; i<_root.words.length; i++) {
				if (_root.words[i+1] == _root.hot) {
					pushed+= _root.poisk_ar.push([i+1]);
				}
			}
...
имхо из-за них (может быть и не только) непонятки

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

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

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


 


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


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