Форум 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=86521)

El Scream 17.10.2006 13:40

Из XML в массив
 
Ситуация
1. Есть генерируемый серверной страницей XML такого вида
Код:

<ELEMENTS>
  <obj_1 Name='object1' param_1='1' param_2='2' ... param_j="j" />
  <obj_2 Name='object2' param_1='1' param_2='2' ... param_j="j" />
  .
  .
  .
  <obj_i Name='objecti' param_1='1' param_2='2' ... param_j="j" />
</ELEMENTS>

2. На стороне Flash
Код:

xml_table.onLoad = function(success:Boolean){
        var Nodes:XMLNode = xml_table;       
        Nodes=Nodes.firstChild;
        for (var Node:XMLNode = Nodes.firstChild; Node != null; Node = Node.nextSibling) {
       
                ?????????
        }

Проблема
Как я могу сделать запись в массив my_array, не зная сколько элементов
в одном узле?. Ведь метод
Код:

my_array.push({
                                  })

здесь помоему не проходит. Как же быть?

Хемуль 17.10.2006 13:57

2 El Scream:
А что сложного? childNodes - это массив... У массива ведь длину получить можно?
Посмотрите тут: http://flasher.ru/forum/showthread.p...F1%EB%EE%E5%EC
Я там писал загрузку простого XML'я...

El Scream 17.10.2006 14:13

Это не совсем то. Точнее то что я писал выше. Я не знаю сколько элементов не в XML, а сколько элементов внутри тега. Мне же нужно получить что то вроде
Код:

my_array.push({
                    param_1:Node.attributes.param_1,
                    param_2:Node.attributes.param_2,
                    .
                    .
                    .
                    param_i:Node.attributes.param_i
                                  })

Беда в том, что я не знаю сколько парамов этих

Хемуль 17.10.2006 14:21

2 El Scream:
Свойства attributes - тоже массив. ^_^

El Scream 17.10.2006 14:43

Мда. Согласен. Я впринципе уже собрался все это через for (all in ..) делать... но тут прило в голову просто решение. Итак Код будет выглядеть так.
Код:

System.useCodepage=true;

var my_array=new Array;

var xml_obj= new XML();
        xml_obj.ignoreWhite = true;
        xml_obj.xmlDecl="xml version=1.0 encoding=UTF-8?";
        xml_obj.load("file");

xml_obj.onLoad = function(success:Boolean){
        var Nodes:XMLNode = xml_file;
        Nodes=Nodes.firstChild; // в зависимости по какой глубине XML идем
        for (var Node:XMLNode = Nodes.firstChild; Node != null; Node = Node.nextSibling) {
                my_array.push(Node.attributes);
        }
// в дальнейшем если нам нужен вывод данных в табличном виде
my_table.dataProvider =my_array;
}

Простенько и со вкусом :bye:

etc 17.10.2006 14:52

Цитата:

Сообщение от Хемуль
2 El Scream:
Свойства attributes - тоже массив. ^_^

attributes — объект.

Хемуль 17.10.2006 15:05

2 __etc:
Ага... Тогда ошибка в переведённом словаре AS...
Хотя, всё равно используется как ассоциативный массив...

etc 17.10.2006 15:14

http://livedocs.macromedia.com/flash.../00002885.html — Object

Хемуль 17.10.2006 15:18

2 __etc:
Да, спасибо. я знаю. После того вашего сообщения именно туда и пошёл смотреть. Потмо сравнил с Language Reference, которфй скачал с Флешера когда-то. Там написано:
"my_xml.attributes:Array"...
Ладно, не важно, я понял.


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

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