如何让远程对象在E4X中返回XML?

时间:2009-03-10 14:50:43

标签: xml flex blazeds e4x remoteobject

我正在编写一个Flex应用程序,它将BlazeDS充分用于Java服务器。我经常使用远程对象,但是我遇到了一个接收XML比返回对象更清晰,更快的实例。

通过BlazeDS返回XML非常简单。我正在使用Java上的Dom4j构建XML,并通过BlazeDS服务返回根元素。 BlazeDS将Dom4j对象转换为XML。

在Flex端接收此对象时,存在所有ObjectProxy对象而不是XML。我之前在HttpService调用中看过这个,为了解决这个问题,我将resultFormat更改为E4X。

但是,我无法在RemoteObject服务调用上设置resultFormat。

无论如何我可以将这些ObjectProxies转换为E4X格式的XML吗?

2 个答案:

答案 0 :(得分:3)

此外,如果您将XML作为String或某种正式的XML类型返回,那么您可以将其转换为Flex中客户端的XML对象。

答案 1 :(得分:1)

回答你的问题:

  

使用远程服务,您经常使用AMFChannel。 AMFChannel使用二进制AMF   通过HTTP编码。如果不允许二进制数据,那么您可以使用HTTPChannel   是通过HTTP的AMFX(XML格式的AMF)。

http://livedocs.adobe.com/blazeds/1/javadoc/flex/messaging/io/amfx/package-summary.html

RemoteObject的数据格式是二进制AMF,所以如果你想使用XML,你应该使用WebService或HTTPService类(AMF会更快;如果你使用XML,可能会失去速度 - 不确定AMFX )。

LiveCycle似乎也有类似的序列化器:

http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/javadoc/flex/messaging/io/amfx/package-detail.html

希望一些混乱有所帮助。