2011-07-01 13 views
5

Básicamente quiero crear cosas de XMLDesigner en Flex, usando qué usuario puede agregar/editar componentes y propiedades de view/dashboard. estoy almacenando estructura de vista en un archivo xml. Analicé ese archivo en tiempo de ejecución y visualización. Cómo convierte un objeto (que tiene propiedades y sub-objetos) a un nodo xml (que tiene atributos y elementos) y agrega ese xml al archivo xml existente. para que la próxima vez, cuando analice el archivo xml, obtenga ese nuevo componente en mi vista/panel.create xml from object

para por ejemplo, la estructura de objeto de componente en el archivo 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> 

gracias por adelantado.

Respuesta

7

Utilice una biblioteca de serialización XML (de).

Hay muchos por ahí, pero una cosa que he usado y encontré muy estable es FlexxB. ¡Tiene una plétora de funciones y lo juro!

Flexxb está basado en anotaciones y es muy fácil de usar una vez que lo dominas.

Aquí hay un ejemplo copiado del sitio web principal.

 [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(); 
       } 
     } 

Usted decora cada una de sus variables con una anotación y dice qué clase de tipo de XML sería.

Y se crea el objeto

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

Y lo hace

FlexXBEngine.instance.serialize(target)

Y el resultado sería

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

Y la otra cosa impresionante acerca es que Don no tiene que tener la fuente de un objeto para decorarlo.

Hay una API que lo maneja. Usando este AP, logré (serializar) SolidColor y LinearGradient con éxito, donde no tenía la fuente para decorarlo.

Pagar el General Description y Samples. Y es un one SWC install :)

+0

biblioteca muy interesante – maxmc

+0

Hola Ranhiru, gracias por el enlace es casi lo mismo que necesitaba. En este primero tenemos que definir clases para cada componente y definir sus atributos y elementos. ¿Lo es? ¿Qué sucede si queremos agregar nuevos atributos a los componentes para, p. Ej., En este caso primero tenemos que definir el atributo fontSize en la clase Mock3. ¿Podemos hacer esto usando flexXB? ¿Cómo puedo agregar nuevos atributos/elementos a la clase Mock3 en tiempo de ejecución? – Gannesh

+1

Sí. Esa es la manera fácil cuando conoces todos los atributos. O bien, puede utilizar ** API de anotación ** para registrar las anotaciones en tiempo de ejecución. Consulte la sección ** Descriptor de construcción de programa ** en http://code.google.com/p/flexxb/wiki/Samples2x –

0

Yo usaría asbeangen para el trabajo.

  1. se define un DTD
  2. Usted genera clases del modelo de ActionScript de la DTD
  3. en el código ActionScript se carga el código XML y rellenar el modelo generado con los valores
  4. Modifica el modelo y llama toXML() en su raíz. Eso te da un xml con los valores modyfied.

Aquí hay una más elaborada quickstart.

+0

¡Parece complejo! – Gannesh