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

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

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

Регистрация: Oct 2007
Адрес: Украина, Львов
Сообщений: 111
Отправить сообщение для zlatko с помощью ICQ
По умолчанию Оператор @ для несуществующего атрибута

Для выборки нужных елементов из XmlList пользуюсь следующей конструкцией :

Код:
someList.children().(@someAttr == 'someValue');
Но проблема в том что у меня возможна ситуация когда атрибут someAttr не задан вообще. Тогда вылетает ошибка :

Цитата:
Error #1065: Variable @someAttr is not defined
В принцыпе логично, но как мне тогда поступать ? Проходить циклом весь список в поисках нужных елементов ?

Старый 22.01.2008, 13:29
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var _xml:XML = <data>
	<nodeA someAttr='111'>
		<nodeToTrace />
	</nodeA>
	<nodeB />
</data>;

var _xmll:XMLList = _xml.children().(attribute('someAttr') == '111');
trace(_xmll.toXMLString());
__________________
Hell is the possibility of sanity

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

Регистрация: Sep 2002
Сообщений: 30,787
Код:
var xml:XML = <xml>
<item/>
<item>
	<item attr="test"/>
</item>
<item/>
<item/>
</xml>;
var list:XMLList = xml..*.(attribute('attr')=='test');
trace(list.toXMLString());


Последний раз редактировалось etc; 22.01.2008 в 13:34.
Старый 22.01.2008, 13:35
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я вот тож думаю, а зачем проверять сначала наличие атрибута, а потом его еще с чем-то сравнивать... %)
__________________
Hell is the possibility of sanity

Старый 22.01.2008, 17:36
zlatko вне форума Посмотреть профиль Отправить личное сообщение для zlatko Найти все сообщения от zlatko
  № 5  
Ответить с цитированием
zlatko

Регистрация: Oct 2007
Адрес: Украина, Львов
Сообщений: 111
Отправить сообщение для zlatko с помощью ICQ
Спасибо за примеры ! Помогло !

Старый 22.01.2008, 19:52
zlatko вне форума Посмотреть профиль Отправить личное сообщение для zlatko Найти все сообщения от zlatko
  № 6  
Ответить с цитированием
zlatko

Регистрация: Oct 2007
Адрес: Украина, Львов
Сообщений: 111
Отправить сообщение для zlatko с помощью ICQ
Гм...Теперь вот оказалось что к каждому елементу из результующего листа нужно добавить еще один атрибут - id його прямого родителя. Как я понимаю нужно с самого начала использовать цикл и обходить все елементы чтобы найти совпадения атрибута из нужным значением и тут же задать етому елементу новый атрибут - id родителя. Пожалуйста подтвердите что других способов нету, а то я не усну седня

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

Регистрация: Sep 2002
Сообщений: 30,787
Код:
var xml:XML = <xml id="0">
<item/>
<item id="1">
	<item attr="test"/>
</item>
<item attr="test"/>
<item/>
</xml>;
xml..*.(attribute('attr')=='test' && (parent().children()[childIndex()].@id=parent().@id));
trace(xml.toXMLString());


Последний раз редактировалось etc; 22.01.2008 в 20:17.
Старый 22.01.2008, 21:15
zlatko вне форума Посмотреть профиль Отправить личное сообщение для zlatko Найти все сообщения от zlatko
  № 8  
Ответить с цитированием
zlatko

Регистрация: Oct 2007
Адрес: Украина, Львов
Сообщений: 111
Отправить сообщение для zlatko с помощью ICQ
Как всегда я ошибался...Спасибо за красивое решение !

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

Регистрация: Sep 2002
Сообщений: 30,787
Вообще-то этот способ только визуально неплох. В реальности код превращается в тучу циклов, просто вы их не пишете.

Старый 23.01.2008, 02:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Если есть возможность модифицировать ХМЛ -- я бы использовал неймспейсы вместо размножения одинакового аттрибута для всех потомков...
__________________
Hell is the possibility of sanity

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

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

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


 


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


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