Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Простой Xml (http://www.flasher.ru/forum/showthread.php?t=57126)

BlooDHounD 17.04.2004 05:27

Простой Xml
 
Подскажите пожалуйста как проще во флеш-переменые (три масива) занести бездетный xml. А то у меня чё-то только первый елемент заносит.
Код:

<?xml version="1.0"?>
<menu>
        <m name="111" href="http://111.ru/" w="11"/>
        <m name="222" href="http://222.com/" w="22"/>
        <m name="333" href="http://333.net/" w="33"/>
        ...
        <m name="nnn" href="http://nnn.org/" w="nn"/>
</menu>


BlooDHounD 17.04.2004 21:34

В массив a - name; в b - href; ; в c - w.
Тоесть получить что-то вроде этого:
Код:

a = new Array("111", "222", "333" ... "nnn");
b = new Array("http://111.ru", "http://222.com", "http://333.net" ... "http://nnn.org");
b = new Array("11", "22", "33" ... "nn")


silin 17.04.2004 23:51

xmlElt = new XML("<menu><m name='111'href='http://111.ru/'w='11'/><m name='222'href='http://222.com/'w='22'/><m name='333'href='http://333.net/'w='33'/></menu>");
var nod=xmlElt.firstChild.firstChild;
a=[];
b=[];
c=[];
i=0;
while(nod){
a[i]=nod.attributes.name;
b[i]=nod.attributes.href;
c[i]=nod.attributes.w;
nod=nod.nextSibling;
i++;
}

BlooDHounD 18.04.2004 03:15

Код:

eXML = new XML();
eXML.ignoreWhite = true;
eXML.load('1.xml');
eXML.onLoad = function()
{
        elXML=eXML.firstChild.firstChild;
        while (elXML)
        {
                a[i]=elXML.attributes.name;
                b[i]=elXML.attributes.href;
                c[i]=elXMLattributes.w;
                elXML=elXML.nextSibling;
                i++;
        }
}

Ну и чё тут не так?
Закинь исходник, плз!

silin 18.04.2004 11:41

eXML = new XML();
eXML.ignoreWhite = true;
eXML.load('1.xml');
a=[];b=[];c=[];
eXML.onLoad = function()
{
var i=0;
var elXML=eXML.firstChild.firstChild;
while (elXML)
{
a[i]=elXML.attributes.name;
b[i]=elXML.attributes.href;
c[i]=elXML.attributes.w;
elXML=elXML.nextSibling;
i++;
}
trace(a+" "+b+" "+c);
}

BlooDHounD 20.04.2004 05:27

Ничё не выходит!
Вот чё пишу в первом кадре:
Код:

eXML = new XML();
eXML.ignoreWhite = true;
eXML.load('xml.xml');
var a = b = new Array();
eXML.onLoad = function()
{
        var i = 0, elXML = eXML.firstChild.firstChild;
        while (elXML)
        {
                a[i]=elXML.attributes.n;
                b[i]=elXML.attributes.u;
                elXML=elXML.nextSibling;
                i++;
        }
        trace(a+" "+b);
}

Вот чё пишу в xml.xml:
Код:

<?xml version="1.0"?>
<menu>
        <m n="1" u="11"/>
        <m n="2" u="22"/>
        <m n="3" u="33"/>
        <m n="4" u="44"/>
</menu>

И нефига! Пустые массивы!

Dindin 20.04.2004 11:53

Во первых, ты уверен, что хочешь создать второй массив как ссылку на первый?
Код:

var a = b = new Array();
Во вторых - просто попробуй так
Код:

eXML.ignoreWhite = true;
eXML.load('xml.xml');
b = new Array();
a = new Array ();
eXML.onLoad = function()
{
        var i = 0, elXML = eXML.firstChild.firstChild;
        while (elXML)
        {
                a[i]=elXML.attributes.n;
                b[i]=elXML.attributes.u;
                elXML=elXML.nextSibling;
                i++;
        }
        trace(a+" "+b);
}


Nox Noctis 20.04.2004 11:54

ошибка:
var a = b = new Array(); приводит к созданию ОДНОГО массива с двумя ссылками на него. и соответственно заполняешь ты тоже один массив.

лучше так:
Код:

eXML = new XML();
eXML.ignoreWhite = true;
eXML.load('xml.xml');
var a = [], b = [];
eXML.onLoad = function() {
        var ptr = this.firstChild.firstChild;
        while (ptr) {
                a.push(ptr.attributes.n);
                b.push(ptr.attributes.u);
                ptr = ptr.nextSibling;
        }
        trace(a.join("\n")+"\n __ \n"+b.join("\n"));
};

и не надо никакого счетчика.

или можно сделать так, со счетчиком:
Код:

eXML.onLoad = function() {
        var ptr = this.firstChild;
        for (var i = 0; i<ptr.childNodes.length; i++) {
                var item = ptr.childNodes[i];
                a[i] = item.attributes.n;
                b[i] = item.attributes.u;
        }
        trace(a.join("\n")+"\n __ \n"+b.join("\n"));
};


Nox Noctis 20.04.2004 11:56

какие шустрые блин :) слова вставить не дадут..

Dindin 20.04.2004 12:03

:)

BlooDHounD 20.04.2004 12:59

Я затупил!
 
Вложений: 1
Так! то ли я тупой, то ли гвозди, толи лыжи не едут?
Объясните, то ли я чё не догоняю:

Nox Noctis 20.04.2004 13:16

ну ? в чем проблема-то ? :) работает же..

BlooDHounD 20.04.2004 13:30

День моей тупости...
 
А чё у меня не работает?

Dindin 20.04.2004 13:46

У меня номано работает - факт!

BlooDHounD 20.04.2004 13:50

ёпсель-мопсель!
 
неверю!
Давaйте кто-нить из вас заставит оба масива в TextFielde'ах появляться! и выложит свфку.

Dindin 20.04.2004 18:03

Ну как, прошло?


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

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