2009-11-26 40 views
0

是否有可能反序列化的XML文件在Flex中的一类,而无需手动检查XML和/或创建类,具有HttpService的帮助?将XML反序列化为Flex中的自定义类?

编辑:解释多一点更好。

我们有一个包含一个XML文件:

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

在Flex,我们希望这是序列化到我们的项目类:

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

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

     public function Project() 
     { 
     } 
    } 
} 

的XML装有一个的HTTPService。

回答

1

为了让Flex将自动序列化和反序列化你的对象,需要有某种形式的WSDL或RPC协议。因此,您需要指定一个WSDL来反序列化XML数据,使用AMF或其他协议,或者使用您的httpservice直接返回的任何MIME类型。

编辑:你可以设置你自己的一组类来处理你的xml对象的反序列化。 AMF服务的工作方式是首先将返回的对象反序列化为mx.utils.ObjecProxy实例,然后将ObjectProxytype属性与现有的RemoteClass匹配,并将PropertyList中类的属性初始化为动态Object属性中的值。您可以通过查看XML根目录的属性和值的类型和子节点来设置自己的一组创建ObjectProxy的类,然后基于对象代理实例化AS类。你将无法避免编写一些代码来直接处理XML。

+0

嗯,我看到的。编写我们自己的一组类来处理序列化/反序列化并不是真正的选择。所以我认为我们没有别的选择,只能手动做。谢谢! – MysticEarth 2009-11-26 16:26:24

+0

您可以看到我的意思,但需要某种定义将XML对象中的值映射到AS类。例如,没有查看Schema,''节点被读取为一个字符串值,并且'Project'类的'Number'属性被键入为'int'。您需要某种模式或附加信息来处理映射,这就是Flex支持基于AMF和WSDL的Web服务的原因。 – 2009-11-26 16:45:30

0

你可能想尝试的XML序列库如FlexXB(http://code.google.com/p/flexxb)。它使用注释来自动执行(反)序列化过程,从而可以很好地控制生成的xml。

相关问题