Форум 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)
-   -   Многомерный массив (http://www.flasher.ru/forum/showthread.php?t=129015)

Keenan 22.08.2009 15:57

Многомерный массив
 
Подгружаю xml файл catalogue1.xml

Код:

<?xml version="1.0" encoding="UTF-8"?>
<catalogue>
        <category>
                <item>
                        <article>001</article>
                </item>
                <item>
                        <article>002</article>
                </item>
        </category>
        <category>
                <item>
                        <article>003</article>
                </item>
                <item>
                        <article>004</article>
                </item>
        </category>
</catalogue>

и передаю его в многомерный массив

Код AS1/AS2:

var catalogue = new Array();
cat_xml = new XML();
cat_xml.ignoreWhite = true;
cat_xml.load('catalogue1.xml');
cat_xml.onLoad = function(success) {
        if (success) {
                parseFile(cat_xml);
                showArray();
        }
};
 
var a:Number = 0;
var b:Number = 0;
var c:Number = 0;
 
function parseFile(xmlDoc_xml) {
        for (var aNode:XMLNode = xmlDoc_xml.firstChild.firstChild; aNode != null; aNode=aNode.nextSibling) {
                catalogue[a] = new Array(aNode.childNodes.length);
                for (var bNode:XMLNode = aNode.firstChild; bNode != null; bNode=bNode.nextSibling) {
                        catalogue[a][b] = new Array(bNode.childNodes.length);
                        for (var cNode:XMLNode = bNode.firstChild; cNode != null; cNode=cNode.nextSibling) {
                                catalogue[a][b][cNode.nodeName] = cNode.firstChild.nodeValue;
                                n = new AccessPoint(catalogue[a][b][cNode.nodeName]);
                        }
                        b++;
                }
                a++;
        }
}
 
 
function showArray() {
        trace(catalogue[1][0]["article"]);
}

в output получаю undefined, но если trace(catalogue[0][0]["article"]) или trace(catalogue[0][1]["article"]), то все ок, выдает 001 и 002 соответственно. Такое впечатление, что при создании массива не учитывается вторая категория <category> </category>.

Подскажите, пожалуйста, в чем может быть проблема?

udaaff 22.08.2009 21:09

Что, по-вашему, делает эта строчка?
Код AS1/AS2:

catalogue[a][b][cNode.nodeName] = cNode.firstChild.nodeValue;

И счетчик b у вас не обнуляется.

Keenan 22.08.2009 21:20

Спасибо большое, понял!!! :)


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

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