Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Задачка, связанная с XML (http://www.flasher.ru/forum/showthread.php?t=95060)

KoLar 26.04.2007 21:15

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

<tag>
  <prm />
  <prm />
  <tag>
      <prm />
  </tag>
  <prm />
  <prm />
</tag>

Есть ссылка на выделенный узел. Теперь нужно, имея эту ссылку удалить родительский узел tag и узнать каким по счёту tag был среди дочерних узлов внешнего tag. Удалить узел нет проблем ( _ссылка_.parentNode.removeNode(); ).

А как можно узнать "номер" дочернего узла? Фактически нам надо узнать индекс массива childNodes для внешнего tag. Как это можно сделать?

MINASTIS 26.04.2007 21:26

Задай tag параметр имя, проверяй циклом на имя все узлы, как найдет - копируй цифру-номер этого узла в переменную, удаляй свой главный узел и трейс ту переменную.

Kikasso 26.04.2007 21:34

Цитата:

Сообщение от KoLar
А как можно узнать "номер" дочернего узла? Фактически нам надо узнать индекс массива childNodes для внешнего tag. Как это можно сделать?

Перебрать массив в цикле..
В 8-ке есть еще idMap

KoLar 26.04.2007 21:39

Была такая мысль, но немножко не удобно. Сейчас вдумался и это натолкнуло на мысль: можно tag задать параметр с его номером. Наверное будет удобнее.

P.S. MINASTIS спасибо.

KoLar 26.04.2007 21:45

2Kikasso
Цитата:

Перебрать массив в цикле..
Когда начнём перебирать и дойдём до нужного tag как мы узнаем, что это и есть нужный (напомню, что у нас есть только ссылка на вложеный <prm>)

Цитата:

В 8-ке есть еще idMap
У меня Flash7

Kikasso 26.04.2007 22:00

=== this.parentNode может быть. Или задавай, правда, атрибут и сравнивай.

Molecula 26.04.2007 22:05

2KoLar:
Интересно, а вообще для какой задачи такое надо...может переосмыслить её и придумать иначе?

etc 26.04.2007 22:14

Использовать параметр id и обращаться по нему.

Molecula 26.04.2007 22:20

У него же Flash7.

lowka 26.04.2007 22:44

Цитата:

Сообщение от Molecula
У него же Flash7.

И? Атрибуты-то доступны.

etc 27.04.2007 01:25

Цитата:

Сообщение от Molecula
У него же Flash7.

А кто сказал, что в семерке это не работает? Просто нет idMap, ну и что?

KoLar 27.04.2007 07:30

Цитата:

Сообщение от Molecula
2KoLar:
Интересно, а вообще для какой задачи такое надо...может переосмыслить её и придумать иначе?

Иначе нельзя.
Цитата:

Сообщение от __etc
Использовать параметр id и обращаться по нему.

Что то я немного не понял, зачем нам id. Обратится к tag мы можем и через parentNode, в этом проблемы нет, а нам нужно узнать номер этого узла.

KoLar 27.04.2007 07:37

Цитата:

Сообщение от Kikasso
=== this.parentNode может быть. Или задавай, правда, атрибут и сравнивай.

О сравнении я тоже думал. Только не знаю, сравнит ли Flash два XML правильно. К тому же в этом случае тоже придётся использовать цикл, а лучше бы как-нибудь без него.

Kikasso 27.04.2007 07:42

Без цикла никак. Лучше по id.

KoLar 27.04.2007 07:58

Цитата:

Сообщение от Kikasso
Без цикла никак. Лучше по id.

Если tagу присвоить атрибут с его номером num, то без цикла можно будет обратиться this.parentNode.attributes.num

Про id:
Повторюсь, что я не понимаю, зачем нам id. Обратится к tag мы можем и через parentNode, в этом проблемы нет, а нам нужно узнать номер этого узла. Как здесь нам id то поможет?

объясните, пожалуйста, для чего здесь нужен id. как в этой ситуации он может помочь?

Kikasso 27.04.2007 08:53

ну если совпадет attributes.id, тогда это мы.

etc 27.04.2007 13:16

Код:

var node = XMLNode(my_xml['idValue']).parentNode;
trace(node);

idValue — значение аттрибута id у нода prm. my_xml — весь наш XML. Код написан под семерку, в восьмерке надо дописать idMap.

KoLar 27.04.2007 18:15

Цитата:

idValue — значение аттрибута id у нода prm. my_xml — весь наш XML. Код написан под семерку, в восьмерке надо дописать idMap.
Зачем ставить аттрибут id у prm, ведь надо узнать номер tag? И как зная id мы узнаем номер?

Цитата:

Сообщение от Kikasso
Без цикла никак. Лучше по id.

Почему нельзя? А что так нельзя:
присвоить tag аттрибут с его номером (num), а потом
Код:

number = this.parentNode.attributes.num;

etc 27.04.2007 21:46

Цитата:

Сообщение от KoLar
Зачем ставить аттрибут id у prm, ведь надо узнать номер tag? И как зная id мы узнаем номер?

А зачем узнавать номер? Номер может быть прямо в id написан.

KoLar 27.04.2007 21:57

Всем спасибо за советы!:bb:
В задаче разобрался. Сделал (не без вашей помощи:victory:). Вроде бы пока всё устраивает!:rolleyes:
Ещё раз спасибо!


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

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