将XML反序列化到Flex中的自定义类?
在Flex中是否可以将XML文件反序列化为类,而无需手动检查XML和/或在将XML反序列化到Flex中的自定义类?,xml,apache-flex,serialization,httpservice,Xml,Apache Flex,Serialization,Httpservice,在Flex中是否可以将XML文件反序列化为类,而无需手动检查XML和/或在HttpService的帮助下创建类 编辑:解释得更多更好 我们有一个XML文件,其中包含: <Project> <Name>NameGoesHere</Name> <Number>15</Number> </Project> XML加载了HTTPService。为了让Flex自动序列化和反序列化对象,需要某种WSDL或RPC协议。因此,您要么需
HttpService
的帮助下创建类
编辑:解释得更多更好
我们有一个XML文件,其中包含:
<Project>
<Name>NameGoesHere</Name>
<Number>15</Number>
</Project>
XML加载了HTTPService。为了让Flex自动序列化和反序列化对象,需要某种WSDL或RPC协议。因此,您要么需要指定用于反序列化XML数据的WSDL,要么使用AMF或其他协议,要么使用httpservice直接返回的任何MIME类型
编辑:您可以设置自己的类集来处理xml对象的反序列化。AMF服务的工作方式是首先将返回的对象反序列化为实例,然后将
ObjectProxy
的type
属性与现有的RemoteClass
匹配,并将PropertyList
中类的属性初始化为动态对象
属性中的值。您可以通过查看类型的XML根以及属性和值的子节点来设置创建ObjectProxy的自己的类集,然后基于对象代理实例化AS类。但是,您将无法避免编写一些代码来直接处理XML。您可能需要尝试使用XML序列化库,例如FlexXB()。它使用注释自动执行(反)序列化过程,使您能够很好地控制生成的xml。也可以尝试将xml反序列化为对象:
嗯,我明白了。编写我们自己的类集来处理序列化/反序列化实际上不是一个选项。因此,我认为我们没有其他选择,只能手动操作。谢谢您可以理解我所说的需要某种定义将值从XML对象映射到AS类的意思。例如,在不查看模式的情况下,
节点被读取为字符串值,而项目
类的Number
属性被键入为int
。您需要某种模式或其他信息来处理映射,这就是Flex支持AMF和基于WSDL的web服务的原因。
package com.examplepackage
{
import mx.collections.ArrayCollection;
[XmlClass]
public class Project
{
public var Name:String;
public var Number:int;
public function Project()
{
}
}
}