Просмотр полной версии : Парсинг XML в массив объектов
JesterAntik
02.09.2008, 20:42
Задача распарсить xml типа
<objects>
<object>свойства объекта</object>
<object>свойства объекта</object>
.......
</objects>
В массиа объектов определенного класса.
Оснавная сложность состоит в том что бы пробежаться в цикле по всем <object>.
PS. Поиск по форуму юзал. Варианты использовать XML не переводя в объекты отпадает. Создать свой класс на основе XML тоже не получается(как бы не хотелось, но flex говорит что это финальный класс и детей не даст сделать=) )
Pogrebeshka
03.09.2008, 05:39
Так а в чем собственно проблема, парсите данный файл, и получает либо XML либо XMLList(с чем Вам удобнее работать) и дальше просто динамически создаете нужные вам классы, передавая значения из XML в конструктор вашего класса.
XMLList дает возможность прохода по массиву object
JesterAntik
03.09.2008, 09:51
а не могли бы привести пример конкретного обращения к iтой строке <object>.
Pogrebeshka
03.09.2008, 21:21
Может быть вариант такой: myXMLCol.elements()[i] myXMLCol - это объект типа XMLList. Так же посмотрите методы этого класса child и attribute, добавляют гибкости в работе с XML.
Так же можете посмотреть как работать с классом SimpleXMLDecoder, в него передается XMLDocument, а этот класс возращает тип Object, а далее зная структуру XML файла, можно обращаться к его свойствам, которые будут в такой же иерархии как и в файле.
var myXML:XML = <objects>
<object>obj1</object>
<object>obj2</object>
</objects>;
var arr:ArrayCollection = new ArrayCollection();
for each(var xml:XML in myXML.children()){
arr.addItem(xml);
}
Как я понимаю SimpleXMLDecoder, ArrayCollection, XML.childrens() только во Flex доступны? Не могу найти их в справке по Flash.
XML.childrens() -> XML.children()
Остальные два из mx пакета, но их, как и любой другой пакет можно использовать во Флеше, вопрос только в нужности этих классов...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.