Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从对象创建xml_Xml_Apache Flex_Actionscript 3_Xml Serialization - Fatal编程技术网

从对象创建xml

从对象创建xml,xml,apache-flex,actionscript-3,xml-serialization,Xml,Apache Flex,Actionscript 3,Xml Serialization,基本上,我想在Flex中创建XMLDesigner之类的东西,用户可以使用它添加/编辑视图/仪表板的组件和属性。 我将视图结构存储在xml文件中。我在运行时解析了该文件并显示视图。 如何将对象(具有属性和子对象)转换为xml节点(具有属性和元素),并将该xml添加到现有xml文件中。以便下次解析xml文件时,我将在视图/仪表板中获取新组件 例如,xml文件中组件的对象结构: <view id="productView" label="Products"> <panel id="

基本上,我想在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>

提前感谢。

使用XML(反)序列化库

有很多,但有一件事,我用过,发现非常稳定的是。它有很多功能,我发誓

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;
你呢

flexbEngine.instance.serialize(目标)

结果是

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

33
另一件令人敬畏的事情是,你不必有物品的来源来装饰它

有一个API可以处理这个问题。使用此AP,我成功地将
SolidColor
LinearGradient
反(序列化)了,因为我没有源代码来修饰它

签出和。我会用它来做这份工作

  • 您可以定义dtd
  • 您可以从dtd生成actionscript模型类
  • 在actionscript代码中,加载xml并用值填充生成的模型
  • 修改模型并在其根上调用toXML()。这将为您提供一个带有modyfied值的xml

  • 这里有一个更详细的说明。

    你好,Ranhiru,谢谢你的链接,它几乎与我需要的一样。首先,我们必须为每个组件定义类,并定义它们的属性和元素。是吗?如果我们想为组件添加新属性,例如,在这种情况下,我们必须首先在Mock3类中定义fontSize属性。我们可以用flexXB做这些事情吗??如何在运行时向Mock3类添加新属性/元素?是。当您知道所有属性时,这是最简单的方法。或者,您可以使用注释API在运行时注册注释。检查该示例中的“编程构建描述符”部分,在该部分中,他们没有向类添加任何新属性或元素。我们可以用注释API来做吗?等等!所以这个新属性不在对象中,但是您想将它添加到XML中吗?或者在运行时将新属性添加到对象中?最好将此问题作为单独的问题提出。但是由于Flexxb有注释API,您将能够序列化它。或者您可以尝试使用
    SimpleXMLEncoder
    SimpleXMLEncoder