2009-11-26 65 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。

相關問題