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

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

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

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
По умолчанию XMLList удалить под узел узла

вобщем есть такой XML

Код:
var foo:XMLList = 
		   <>
                     <foo data="first"/>
                     <foo data="second"/>
                     <foo data="third"/>
                     <foo data="for"/>
                     <foo data="five">
                        <foo data="sub-five">
                            <foo data="sub2-five"/>
                        </foo>
                     </foo>
                  </>
Как из оного удалить "<foo data="sub2-five"/>" ? рекурсивно добраться до этого ключа я конечно же могу, вопрос в том, что как его удалить ? метод реплейс говорит, что работает только в листе где есть один чето там, через "foo[4][0] = <></>" говорит нельзя задавать значения индексированному XML

Вобще, нужно удалить имея такие данные "five->sub-five->sub2-five", я решил рекурсивно пройтись по XML ( собрать какую то строку в нужном виде или индексы не проблема ) и найдя нужный объект его удалить, но вот как удалить не понятно (

Черех child конечно можно, НО путь может быть любой и как тогда собрать строку из этих сhild's ? то есть это работает вот так foo.child("foo").child("foo")[0] = <></>, но как собрать такую строку в рантайме ? child("foo.foo") не работает

Да и еще, это я пытаюсь в RunTime менять MenuBar из Flex'a, это я к тому, что может есть куда более простой способ имея путь удалить объект


Последний раз редактировалось easy.proger; 10.12.2010 в 11:06.
Старый 10.12.2010, 11:24
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Вы определитесь, XML или XMLList?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 10.12.2010, 11:27
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 3  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Воспользуйтесь оператором delete (XML), чтобы удалить узлы XML.

Цитата:
При использовании с операндом XMLList результатом оператора delete всегда является значение true, так как операнд XMLList всегда ссылается на действительный объект (хотя, возможно, и пустой) XMLList.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.12.2010, 11:30
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 4  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
Цитата:
Сообщение от iNils Посмотреть сообщение
Вы определитесь, XML или XMLList?
XMLList

Цитата:
Воспользуйтесь оператором delete (XML), чтобы удалить узлы XML.
Цитата:
delete foo.(@data == "five").foo.(@data == "sub-five").foo;
это понятно, но как я говорил сам путь динамический и может быть любой вложености, как собрать тогда строку для delete, если глубина может быть разная ?

+ мне нужно добавлять таким же образом имея путь

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Оператор ".."?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.12.2010, 11:51
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 6  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
Цитата:
Сообщение от dimarik Посмотреть сообщение
Оператор ".."?
смотрите

Есть задача удалить ключ по такому пути - "five->sub-five->sub2-five", я могу рекурсивно найти этот ключ в XML, но что потом ? нужно собрать строку, допустим я после рекурсии знаю, что мой ключ находиться по индексу 4 далее индекс 0 и далее 0 или же я знаю, что строка для удаления будет выглядеть как

- delete foo.(@data == "five").foo(@data == "sub-five").foo;
- foo.child("foo").child("foo")[0] = <></>

В данном случае я знаю как выглядит строка для удаления и если бы вопрос стоял о единичном случае удаления я бы успокоился... вопрос в том, что путь может быть "five->sub-five->sub2-five->someFoo" и т/д/, то есть обсалютно не предсказуемый, но какие то условия для составления представления о том где лежит нужный мне ключ я могу составить по результатам рекурсивоного обхода XMLList, так вот, если вы уверены, что мне поможет оператор ".." и если вас не затруднит, покажите пример на приведенных примерах, буду очень благодарен...

Добавлено через 5 минут
пока писал пришла идея, как только нашли XML в котором находится наш узел, убивать чайлд у предидущего узла

вобщем сделал, но если есть предложения выслушаю )))

Старый 10.12.2010, 12:26
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 7  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
допустим я после рекурсии знаю, что мой ключ находиться по индексу
потом
Цитата:
что путь может обсалютно не предсказуемый
Вы определитесь. Можете найти узлы подлежащие удалению или нет?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.12.2010, 13:03
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 8  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
Цитата:
Сообщение от dimarik Посмотреть сообщение
потом


Вы определитесь. Можете найти узлы подлежащие удалению или нет?
могу конечно

Старый 10.12.2010, 15:32
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
So, есть ссылки на узлы, которые нужно удалить. В чем проблема?

Старый 10.12.2010, 17:45
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 10  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
So, есть ссылки на узлы, которые нужно удалить. В чем проблема?
Уже не в чем ) решено уже давно ( выше постом )

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

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

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


 


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


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