Показать сообщение отдельно
Старый 24.01.2010, 17:01
taras_ вне форума Посмотреть профиль Отправить личное сообщение для taras_ Найти все сообщения от taras_
  № 1  
Ответить с цитированием
taras_
 
Аватар для taras_

Регистрация: Aug 2008
Адрес: RUS, Viipuri
Сообщений: 44
По умолчанию xml, e4x - фильтрация с помощью предикатов

Всем привет!

Есть такой xml:
Код:
<data>
	<playlists>
		<playlist id="1" pages="1,5">
			<track id="1" src="songs/006.mp3" ord="3" />
			<track id="2" src="songs/001.mp3" ord="1" />
			<track id="3" src="songs/005.mp3" ord="2" />
		</playlist>       
		<playlist id="2" pages="2,4">
			<track id="1" src="songs/008.mp3" ord="4" />
			<track id="2" src="songs/009.mp3" ord="1" />
			<track id="3" src="songs/002.mp3" ord="2" />
			<track id="4" src="songs/007.mp3" ord="3" />
		</playlist>		
		<playlist id="default">
			<track id="1" src="songs/003.mp3" ord="2" />
			<track id="2" src="songs/004.mp3" ord="1" />		
		</playlist>
	</playlists>       
</data>
Мне необходимо с помощью предикатов получить плейлист, в атрибуте pages которого содержится айди нужной мне страницы. Текущий код:

Код AS3:
//...
private var		pPAGE_ID		:String 	= "1";
//...
trace(_songsXml.playlists.playlist.(@pages.toString().indexOf(pPAGE_ID) != -1));
//...
Выдает результат:
Код:
ReferenceError: Error #1065: Variable @pages is not defined.
	at Main/parseSongsXML()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at CLoader/setupCompleteHandler()
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at flash.net::URLLoader/onComplete()
несмотря на то, что код:
Код AS1/AS2:
trace(_songsXml.playlists.playlist.@pages);
Нормально выводит содержимое атрибутов... Не могу понять, в чем же дело. Подскажите плиз.

Добавлено через 4 минуты
Млин, создал сообщение, посмотрел на него внимательно и все понял!

Завал происходит на ноде, у которого нет этого атрибута! Ввел дополнительное условие - помогло! Два часа моск трахал...

Код AS3:
 
//...
trace(_songsXml.playlists.playlist.(hasOwnProperty("@pages") && @pages.toString().indexOf(pPAGE_ID) != -1));
//...


Последний раз редактировалось taras_; 24.01.2010 в 17:08.