Flex - 嵌套对象结构的XML序列化和反序列化

时间:2008-11-06 20:00:12

标签: flex actionscript-3 xml-serialization

我们的Flex应用程序希望将请求和响应作为对象图(在那里没有任何异常)处理,例如响应成为某个视图的模型,并且是一个具有多层嵌套的结构。

**现在,理想情况下,我们希望将相同的客户端(和服务器)端对象用于不同的消息格式,例如XML和AMF,并具有可插入的序列化/反序列化层(!)

AMF使用了客户端到服务器的序列化和匹配     [RemoteClass(别名= “samples.contact.Contact”)] 但似乎没有XML的等价物。

我(有点乐观)正在寻找一种将对象图序列化为XML的简洁方法,以便从客户端通过HTTPService发送。

对于响应,默认的“对象”和“E4X”提供了一些反序列化。这很方便,但是我们当然没有将XML解包回特定AS类的细节,就像我们使用AMF一样。

有什么建议吗? (确实有一个关于将对象包装/转换为XML或XMLList的想法 - 但这似乎不起作用)

更新

这两个库看起来都很有用,我很可能会在某些时候使用它们。

目前,我真的需要简单地重复使用我们在任何情况下使用的AMF3序列化的元数据集([RemoteClass],[Transient])

..所以目前最好的选择是AMFX - 使用Flex数据服务进行AMF传输,使用XML - mx.messaging.channels.amfx包中的类 - 目前唯一的缺点是任何Externalizable类都转换为Hex字节流 - 和ArrayCollection是Externalizable! (希望通过在子类中序列化内部数组来解决方法..)

希望这对某人有用..

4 个答案:

答案 0 :(得分:5)

关于Xml序列化,我可以给你一个起点(虽然可能有偏见:D)。

我正在开发一个项目,允许自动将AS3对象转换为xml和从xml转换。它基本上使用您用于通信的模型对象上的注释来构造xml结构或从xml填充对象。

它被称为FlexXB,您可以在http://code.google.com/p/flexxb/查看。 我开始这个项目是因为我在工作中遇到了同样的问题(即我有一个通过xml进行通信的服务器),我希望它对其他人有用。

干杯,

亚历

答案 1 :(得分:2)

又一个项目: FleXMLer http://code.google.com/p/flexmler/) 它具有asx3m的直接态度,您可以在其中调用:

new FleXMLer().serialize(obj);

或者您可以自定义XML元素名称,跳过元素并调整数组和哈希表的序列化方式。 非常感谢您的意见。

答案 2 :(得分:1)

http://code.google.com/p/asx3m结帐asx3m项目 它是Java XStream序列化库的AS3端口,运行良好。 我之所以这样做是因为我必须连接到一个服务器平台,该平台使用XStream来交换数据对象并在其中投入大量的工作。 它可以扩展为将AS3对象序列化为任何格式(例如JSON),并且可以利用用户定义的元标记的功能。 欢呼声,

的Tomislav

答案 3 :(得分:0)

还有一个包含Adobe的JSON库。而且由于ActionScript是JavaScript的超集......而JSON越来越受支持跨框架......