создать XML из объекта - PullRequest
5 голосов
/ 01 июля 2011

По сути, я хочу создать что-то вроде XMLDesigner во Flex, используя который пользователь может добавлять / редактировать компоненты и свойства представления / панели инструментов.Я храню структуру представления в 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 ]

7 голосов
/ 01 июля 2011

Используйте библиотеку 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, я успешно де (сериализовал) SolidColor и LinearGradient, где у меня не было источника для его украшения.

Оформление Общее описание и Samples .И это одна установка SWC :)

0 голосов
/ 01 июля 2011

Я бы использовал asbeangen для работы.

  1. Вы определяете dtd
  2. Вы генерируете классы модели ActionScript из dtd
  3. В вашем коде ActionScript вы загружаете ваш xml и заполняете сгенерированную модель значениями
  4. Вы модифицируете модель и вызываете toXML () в ее корне. Это дает вам XML с измененными значениями.

Вот более сложный Быстрый старт .

...