Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   XML - уровни (http://www.flasher.ru/forum/showthread.php?t=84837)

Ноябрь 09.09.2006 05:02

XML - уровни
 
Узел можно создать так:
Код:

w = new XML();
newP = w.createElement('P');
w.appendChild(newP);
newP = w.createElement('P');
w.firstChild.appendChild(newP);

а как действовать в цикле?
например childNodes[] ссылается на узлы в пределах одного уровня, а как сослаться на уровень используя индексируемые переменные никак не могу понять..

miramax 09.09.2006 06:17

Цитата:

Сообщение от Ноябрь
ссылается на узлы в пределах одного уровня, а как сослаться на уровень используя индексируемые переменные никак не могу понять..

если тебе нужно следующее
<ROOT>
<NODE>
<NODE>
<NODE/>
</NODE>
</NODE>
</ROOT>
делай так
Код:

xm=new XML("<ROOT />");
xml = xm.firstChild
i=0;
while(i<5){
    node = xm.createElement('P');
    xml.appendChild(node); 
    xml = xml.firstChild
    i+=1
}
trace(xm)


Ноябрь 09.09.2006 06:35

Цитата:

Сообщение от miramax
Код:

xml = xm.firstChild

понятненько, спасибо:)

Ноябрь 10.09.2006 00:20

а как попасть на предыдущий уровень..?

Ноябрь 10.09.2006 04:01

сам отвечу
xml.parentNode;
вообще, мне не понятно зачем сначала нужно прировнять какой-то хмл к нашему(т.е xml к xm в данном случае) и затем работать с ним, а в остальном кажется догнал..

Ноябрь 11.09.2006 00:58

как можно посмотреть флэшевскую длинную хмл строчку в виде дерева?

miramax 11.09.2006 04:21

Цитата:

Сообщение от Ноябрь
сам отвечу
xml.parentNode;
вообще, мне не понятно зачем сначала нужно прировнять какой-то хмл к нашему(т.е xml к xm в данном случае) и затем работать с ним, а в остальном кажется догнал..

Нет, если обратить внимание на типы, сразу становится ясно что здесь происходит.
Вообще есть класс XMLNode. Он содержит массив childNodes свойства lastChild, firstChild, nextSibling и пр.
Свойство XMLNode.firstChild - содержит ссылку на другой XMLNode и так далее. Т.е. ноды
вложены друг в друга.
Мождно записать консрукцию
xmlNode1= xmlNode2.firstChild.lastChild.childNodes[3] - и тоже получим ссылку на XMLNode. Таким образом мы перемещаемся по так называемому "XML дереву" и рассматриваем все его элементы относительно новой "точки". Имеем другие относительные пути ко всем нодам. Таким образом, записывая конструкцию
В своём примере, я ввёл переменную xml для перемещения по дереву, этот метод является одной из самых сильных сторон XML.
"XML" - наследует XMLNode. Это тот же XMLNode, только без поля attributes и некоторых других фич типа parentNode, т.е. несколько модифицированный. Он имеет методы парсинга, загрузки и прочие полезности, благодаря чему мы можем инициировать новые ноды.

Код:

doc = new XML("<ROOT />");  //создали новый XML
xml = doc.firstChild   
// записали в переменную xml ссылку doc.firstChild
i=0;
while(i<5){

    node = doc.createElement('P'); 
    //создали новый нод, в doc. никакими doc.firstChild или
    //doc.node к нему доступ не получим, только по ссылке this.node

    xml.appendChild(node);
    //теперь мы воткнули node в "дерево" и можем
    //обратиться к нему через поле xml.firstChild

    xml = xml.firstChild;       
    //что мы и сделали, одновременно переписав ссылку xml

    i += 1
}

Цитата:

Сообщение от Ноябрь
как можно посмотреть флэшевскую длинную хмл строчку в виде дерева?

Не понял вопроса...

Ноябрь 11.09.2006 04:57

спасибо за подробный ответ:)

ну trace(xm); в результате появляется что-то такое
<1*0><1*0 /><0*1 /><-1*0 /><0*-1 /><1*-1 /><-1*1 /></1*0><0*1><1*0 /><0*1 /><-1*0 /><0*-1 /><1*-1 /><-1*1 /></0*1><-1*0><1*0 /><0*1 /><-1*0 /><0*-1 /><1*-1 /><-1*1 /></-1*0><0*-1><1*0 /><0*1 /><-1*0 /><0*-1 /><1*-1 /><-1*1 /></0*-1><1*-1><1*0 /><0*1 /><-1*0 /><0*-1 /><1*-1 /><-1*1 /></1*-1><-1*1><1*0 /><0*1 /><-1*0 /><0*-1 /><1*-1 /><-1*1 /></-1*1>
трудно понять что там к чему, приходится копировать в блокнот и превращать в "дерево"

утро:
-Ура я написал алгоритм бесконечного ветвления:)

iNils 11.09.2006 12:08

Есть волшебный метод Поиск и слово Дерево :)


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

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