PDA

Просмотр полной версии : Из XML в массив


El Scream
17.10.2006, 13:40
Ситуация
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.php?t=85790&page=6&highlight=%EA%E0%F0%F2%E0+%F1%EB%EE%E9+%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/8/main/00002885.html — Object

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