PDA

Просмотр полной версии : Парсинг 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 файла, можно обращаться к его свойствам, которые будут в такой же иерархии как и в файле.

Bruiser
04.09.2008, 23:42
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);
}

Kuruki
08.09.2008, 14:11
Как я понимаю SimpleXMLDecoder, ArrayCollection, XML.childrens() только во Flex доступны? Не могу найти их в справке по Flash.

wvxvw
08.09.2008, 15:11
XML.childrens() -> XML.children()
Остальные два из mx пакета, но их, как и любой другой пакет можно использовать во Флеше, вопрос только в нужности этих классов...