Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   XMLList удалить под узел узла (http://www.flasher.ru/forum/showthread.php?t=147659)

easy.proger 10.12.2010 11:00

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, это я к тому, что может есть куда более простой способ имея путь удалить объект

iNils 10.12.2010 11:24

Вы определитесь, XML или XMLList?

dimarik 10.12.2010 11:27

Воспользуйтесь оператором delete (XML), чтобы удалить узлы XML.

Цитата:

При использовании с операндом XMLList результатом оператора delete всегда является значение true, так как операнд XMLList всегда ссылается на действительный объект (хотя, возможно, и пустой) XMLList.

easy.proger 10.12.2010 11:30

Цитата:

Сообщение от iNils (Сообщение 956238)
Вы определитесь, XML или XMLList?

XMLList

Цитата:

Воспользуйтесь оператором delete (XML), чтобы удалить узлы XML.
Цитата:

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

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

dimarik 10.12.2010 11:36

Оператор ".."?

easy.proger 10.12.2010 11:51

Цитата:

Сообщение от dimarik (Сообщение 956242)
Оператор ".."?

смотрите

Есть задача удалить ключ по такому пути - "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 в котором находится наш узел, убивать чайлд у предидущего узла

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

dimarik 10.12.2010 12:26

Цитата:

допустим я после рекурсии знаю, что мой ключ находиться по индексу
потом
Цитата:

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

easy.proger 10.12.2010 13:03

Цитата:

Сообщение от dimarik (Сообщение 956248)
потом


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

могу конечно

Psycho Tiger 10.12.2010 15:32

So, есть ссылки на узлы, которые нужно удалить. В чем проблема?

easy.proger 10.12.2010 17:45

Цитата:

Сообщение от Psycho Tiger (Сообщение 956299)
So, есть ссылки на узлы, которые нужно удалить. В чем проблема?

Уже не в чем ) решено уже давно ( выше постом )


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

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