Десериализовать XML в пользовательский класс во Flex? - PullRequest
0 голосов
/ 26 ноября 2009

Можно ли десериализовать XML-файл в класс во Flex без ручной проверки XML и / или создания класса с помощью HttpService?

Редактировать: Объяснено немного больше и лучше.

У нас есть XML-файл, который содержит:

<Project>
 <Name>NameGoesHere</Name>
 <Number>15</Number>
</Project>

В Flex мы хотим, чтобы это было сериализовано в наш класс Project:

package com.examplepackage
{
    import mx.collections.ArrayCollection;

    [XmlClass]
    public class Project
    {
        public var Name:String;
        public var Number:int;  

        public function Project()
        {
        }
    }
}

XML загружен с помощью HTTPService.

Ответы [ 3 ]

1 голос
/ 26 ноября 2009

Для того чтобы Flex автоматически сериализовал и десериализовал объекты для вас, должен быть какой-то протокол WSDL или RPC. Поэтому вам нужно либо указать WSDL, который будет использоваться для десериализации данных XML, использовать AMF или какой-либо другой протокол, либо работать с любым типом MIME, который ваш httpservice возвращает напрямую.

РЕДАКТИРОВАТЬ: Вы можете настроить свой собственный набор классов для обработки десериализации ваших объектов XML. Служба AMF работает так: сначала десериализует возвращенные объекты в mx.utils.ObjecProxy экземпляров, затем сопоставляет атрибут type ObjectProxy с существующим RemoteClass и инициализирует свойства класс в PropertyList значениям в динамическом свойстве Object. Вы можете установить свой собственный набор классов, которые создают ObjectProxy, просмотрев корень XML для типа и дочерние узлы для свойств и значений, а затем создать экземпляры ваших классов AS на основе прокси-объектов Object. Вы не сможете обойтись без необходимости писать некоторый код для прямой обработки XML.

0 голосов
/ 05 мая 2010

попробуйте это также для десериализации xml в Object:

http://ahmadflex.blogspot.com/2010/05/desrializing-helper-class-xml-to-object.html

0 голосов
/ 06 марта 2010

Возможно, вы захотите попробовать библиотеку сериализации xml, такую ​​как FlexXB (http://code.google.com/p/flexxb).. Она использует аннотации для автоматизации процесса (де) сериализации, позволяя вам хорошо контролировать полученный XML.

...