Форум 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 Parsing (+ неразбериха с переменными) (http://www.flasher.ru/forum/showthread.php?t=102385)

The_VooDOo_O 14.10.2007 14:19

XML Parsing (+ неразбериха с переменными)
 
Если XML документ вида:
Код:

<Banner>
  <textBanner size="20" color="#FF0000" url="http://www.ya.ru/"> My text!!!</textBanner>
</Banner>

, где size - размер текста, color - цвет, url - ссылка и "My text!!!" содержимое того самого DynamicText'a.

проблема в общем в том что я не могу никак из XML документа вытянуть нужную информацию...
Особенно меня путают "Дочерние, братские, родительские узлы" прочитанные в одном мануале... помогите разобраться!
Код:

banner_xml = new XML();
banner_xml.onLoad = startBannerShow();
banner_xml.load("banner.xml");

/*function startBannerShow(success) {
        if (success == true) {
//                        rootNode = banner_xml.firstChild;
//                        firstSlideNode = rootNode.firstChild;
//                        text_banner = rootNode.attributes.textBanner;
        }
}

ну короче мои попытки не увенчались успехом :confused:
да, еще один аспект). Функция startBannerShow должна возращать что-то? (return) ? или переменная text_banner будет видна только в теле ф-ции?
Код:

banner_xml.onLoad = startBannerShow();
banner_xml.load("banner.xml");

порядок такой должен быть? (так в мануале который я смотрел, хотя логически по моемому должно быть наоборот)

P.S. и еще один вопрос.. связанный с перменными...
будет ли видна перменная созданная в первом фрейме "видна", допустим, с MovieClip'e? Есть такое понятие как глобальные переменные, кототрые видны в любом месте *.fla? Есть какие "правила" чтоли?)

udaaff 14.10.2007 14:26

Возможно это поможет: banner_xml.ignoreWhite = true;

The_VooDOo_O 14.10.2007 14:29

Цитата:

Сообщение от udaaff
Возможно это поможет: banner_xml.ignoreWhite = true;

нет) это не поможет))) эта строка стояла у меня) я её затер, при добавлении в пост, я так и не понял что она делает)

udaaff 14.10.2007 14:34

Код:

text_banner = rootNode.attributes.textBanner;
у вас атрибута textBanner нету. Mожно, например вывести size:
Код:

firstSlideNode.attributes.size.
Если вы хотите вывести значение текстового узла:
Код:

rootNode.firstChild.firstChild.nodeValue
. Да, и строчечку
Код:

banner_xml.ignoreWhite = true
, верните на место.

Mnilionic 14.10.2007 16:06

Код:

banner_xml.onLoad = startBannerShow();
функцию нужно присваивать, а не вызывать
Код:

banner_xml.onLoad = startBannerShow;

Chas 14.10.2007 17:21

Код:

banner_xml = new XML();
banner_xml.onLoad = startBannerShow;
banner_xml.load("banner.xml");

тут тебе правильно сказали, onLoad присваивай не РЕЗУЛЬТАТ выполнения функции, а указатель на нее. порядок - сначала onload, потом load или наоборот - не имеет значение, потому что функция, на которую указывает onLoad будет вызвана намного позже - аж когда xml-ка загрузится. это вообще может быть вообще через пару кадров.

далее как парсим:
Код:

function startBannerShow(success) {
        if (success == true) {
                rootNode = banner_xml.firstChild; //= <banner>...</banner>
                node = rootNode.firstChild; //=<textBanner>...</textBanner>
                        //получаем значения атрибутов
                        size=node.attributes.size;
                        color=node.attributes.color;
                        ...
                        //получаем содержимое узла <textBanner>
                        text=node.firstChild.nodeValue; //=My text!!!
                        }
}

примечание. если у тебя несколько <textBanner> и тебе их все надо пройти, то для этого нужно использовать другую конструкцию:
Код:

for (i=0; i<rootNode.childNodes.length;i++){
    node = rootNode.childNodes[i];
    ...
}


The_VooDOo_O 15.10.2007 16:45

Во спасибо ребята) помогли)


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

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