![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2009
Сообщений: 8
|
var прош:XML = <foo> <ме id="1"> <св>2</св> <св>3</св> <объ id='1'> <э>20.7</э> </объ> </ме> <ме id='2'> <св>1</св> </ме> <ме id='3'> <I>3</I> <св>1</св> <объ id='2'> <э>10.1</э> </объ> <объ id='3'> <э>9.5</э> </объ> </ме> </foo>; for each (var объ in прош.ме.объ) { if (объ.э > 20) { прош.ме.(attribute("id")=='2').insertChildAfter(null, объ.copy()); delete прош.ме.(attribute("id")=='1').объ.(attribute("id") == объ.@id).* ; // работает delete прош.ме.(attribute("id")=='1').объ.(attribute("id") == объ.@id).@* ; // работает delete прош.ме.(attribute("id")=='1').объ.(attribute("id") == объ.@id) // НЕ РАБОТАЕТ!!! // пишет Оператор "delete" с операндом типа XMLList не поддерживается // а в справке наоборот вроде бы - операнд должен быть XMLList ? } } мне надо просто по выполнению условия перенести узел вместе с child- ами в другое место (узел "ме" с другим атрибутом id) |
|
|||||
|
Modus ponens
|
Скажите, просто из праздного любопытства... вам за этот код платят, или вы это просто развлечения ради?..
Конкретно по теме - вы не можете удалить весь список, можно только узел.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 8
|
Ученики (и руководство) хотят только на Flash, а мне для темы моделирование нужно такое представление-организация данных модели, чтобы "навязчиво-структурированное". Чтобы ученикам структура данных четка бросалась в глаза.
Я учитель в школе, а не ас программирования, мне НАДО это освоить! Добавлено через 3 минуты Поэтому не постыжусь еще раз спросить - где я накосячил? Разве в этом случае я пытаюсь удалить весь список? Последний раз редактировалось 1.regulum; 07.09.2009 в 17:16. |
|
|||||
|
Modus ponens
|
>> Разве в этом случае я пытаюсь удалить весь список?
Да, фильтр оператор X.(Boolean) возвращает XMLList. Иногда этот список может содержать всего 1 узел, тогда его можно сконвертировать в XML. Но это часный случай и delete не умеет такой случай отличать от общего случая.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 8
|
Спасибо, что не погнушались упрямым новичком.
Если не в тягость, как все же избавится от уже не нужного узла? В коде, приблизительно похожем на тот, что выше? |
|
|||||
|
Modus ponens
|
var xml:XML = <foo> <me id="1"> <sv>2</sv> <sv>3</sv> <obj id="1"> <e>20.7</e> </obj> </me> <me id="2"> <sv>1</sv> </me> <me id="3"> <I>3</I> <sv>1</sv> <obj id="2"> <e>10.1</e> </obj> <obj id="3"> <e>9.5</e> </obj> </me> </foo>; var targetList:XMLList = xml.me; var list:XMLList = targetList.obj; for each (var node:XML in list) { if (node.e > 20) { targetList.(@id == "2").appendChild(node.copy()); delete targetList.(@id == "1").obj.(@id == node.@id)[0]; } } trace(xml.toXMLString());
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 8
|
Премного благодарен!
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 33
|
To wvxvw, можно было просто сказать, что т.к. фильтр оператор возвращает XMLList, то нужно обратиться к конкретному элементу возвращаемого списка - [0]
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|