从object创建xml

时间:2011-07-01 07:13:36

标签: xml flex actionscript-3 xml-serialization

基本上我想在Flex中创建XMLDesigner类的东西,使用哪个用户可以添加/编辑视图/仪表板的组件和属性。 我将视图结构存储在xml文件中。我在运行时解析该文件并显示视图。 如何将对象(具有属性和子对象)转换为xml节点(具有属性和元素)并将该xml添加到现有xml文件。以便下次解析xml文件时我将在我的视图/仪表板中获取该新组件。

例如,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>

先谢谢。

2 个答案:

答案 0 :(得分:7)

使用XML(反)序列化库。

有很多,但我发现的一件非常稳定的事情是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:)

答案 1 :(得分:0)

我会使用asbeangen来完成这项工作。

  1. 您定义了一个dtd
  2. 您可以从dtd
  3. 生成actionscript模型类
  4. 在动作脚本代码中,加载xml并使用值
  5. 填充生成的模型
  6. 修改模型并在其根目录上调用XML()。这会给你一个带有modyfied值的xml。
  7. 这是一个更精细的quickstart