2011-07-01 45 views
5

基本上我想在Flex中創建XMLDesigner類的東西,使用哪個用戶可以添加/編輯視圖/儀表板的組件和屬性。 我將視圖結構存儲在一個xml文件中。我在運行時解析該文件並顯示視圖。 如何將一個對象(具有屬性和子對象)轉換爲xml節點(具有屬性和元素)並將該xml添加到現有的xml文件。,這樣下一次當我解析XML文件時,我會在我的視圖/儀表板中得到這個新組件。從對象創建xml

爲e.g,在XML文件中組分的對象結構:

<view id="productView" label="Products"> 
<panel id="chartPanel" type="CHART" ChartType="Pie2D" title="Productwise Sales" x="215" y="80" width="425" height="240" showValues="0" > 
    </panel> 
</view> 

由於提前。

回答

7

使用XML(de)序列化庫。

這裏有很多,但我已經使用並發現非常穩定的一件事是FlexxB。它有很多功能,我發誓!

Flexxb是基於註釋的,一旦掌握了它就很容易使用。

以下是從主網站複製的示例。

 [XmlClass(alias="MOck2Replacement", idField="id")] 
     public class Mock3 
     { 
       [XmlAttribute] 
       public var id : Number = 3; 
       [XmlAttribute] 
       public var attribute : Boolean; 
       [XmlElement(alias="objectVersion")] 
       public var version : Number; 

       public function Mock3() 
       { 
         super(); 
       } 
     } 

您裝點您的每一個變量與註釋,告訴什麼樣的XML類型,這將是。

你創建對象

var target : Mock3 = new Mock3(); 
target.attribute = true; 
target.id = 5; 
target.version = 33; 

你做

FlexXBEngine.instance.serialize(target)

其結果將是

<MOck2Replacement attribute="true" id="5"> 
    <objectVersion> 
    33 
    </objectVersion> 
</MOck2Replacement> 

而其他真棒件事是,你不必須有一個對象來源來裝飾它。

有一個API可以處理它。使用這個AP,我成功地德(連載)SolidColorLinearGradient,我沒有足夠的源來裝飾它。

結帳的General DescriptionSamples。這是一個one SWC install :)

+0

非常有趣的圖書館 – maxmc

+0

嗨Ranhiru,感謝您的鏈接,它幾乎是我需要的一樣。首先,我們必須爲每個組件定義類並定義它們的屬性和元素。是嗎?如果我們想爲組件添加新的屬性,例如 在這種情況下,我們必須首先在Mock3類中定義fontSize屬性。我們可以使用flexXB做這件事嗎?我如何在運行時向Mock3類添加新的屬性/元素? – Gannesh

+1

是的。當你知道所有的屬性時,這是簡單的方法。否則,您可以使用** Annotation API **在運行時註冊註釋。在http://code.google.com/p/flexxb/wiki/Samples2x –

0

我會用asbeangen作業。

  1. 你定義一個DTD
  2. 您從DTD
  3. 在ActionScript代碼生成動作模型類加載你的XML並以填入值生成的模型
  4. 您修改模型,並呼籲toxml用於()就是根。這給你一個xml與modyfied值。

這是一個更詳細的quickstart

+0

看起來很複雜! – Gannesh