Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сериализовать любой объект в XML ? 
:(
    Опции темы
ANTON_AL
Дата 25.9.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 292
Регистрация: 27.1.2007

Репутация: нет
Всего: нет



Доброго дня!

Есть объект, скажем класса Photo:
Код

public class Photo
{
   public var id: String;
   public var title: String;
   public var author: String;
   public var dateTaken: Date;

   [ArrayElementType("String")]
   public var tags: Array;
}


Необходимо сериализовать массив из объектов данного класса в XML.
Способ, который мне известен, следующий:
Код

// массив объектов класса Photo
var photos: ArrayCollection = new ArrayCollection;
// . . .


var library: XML = <library />;

for each( var p: Photo in photos )
{
   var pXML: XML = <photo>
                                 <id>{p.id}</id>
                                 <title>{p.title}</title>
                                 <author>{p.author</author>
                                 <dateTaken>{p.dateTaken.toString()}</dateTaken>
                                 <tags>{p.tags.toString()}</tags>
                              </photo>;
   library.appendChild( pXML );
}

var resultXML = <MyProgram>
                             {library}
                          </MyProgram>;

return resultXML;



Недостаток такого подхода - приходится руками, поле за полем "копировать" в XML. Также приходится руками именовать каждый вложенный тэг в соответствии с именем поля объекта класса.

Хотелось бы иметь нечто, похожее не следующее:
Код

// массив объектов класса Photo
var photos: ArrayCollection = new ArrayCollection;
// . . .


var library: XML = <library />;

for each( var p: Photo in photos )
{
   /* Приведено для иллюстрации */
   library.appendChild( ToXML(p) );
}

var resultXML = <MyProgram>
                             {library}
                          </MyProgram>;

return resultXML;


Есть ли такое ?

Это сообщение отредактировал(а) ANTON_AL - 25.9.2009, 17:29
PM MAIL   Вверх
bars80080
Дата 25.9.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



вопрос: а в xml принципиально? может в одну строку? без всяких тэгов
PM MAIL WWW   Вверх
ANTON_AL
Дата 25.9.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 292
Регистрация: 27.1.2007

Репутация: нет
Всего: нет



bars80080, 

Ну, главное, чтобы результат сериализации был легко читаем и чтобы потом можно было десериализовать обратно в объект класса ...
Но, вообще, лучше XML, чтобы в будущем не заморачиваться по поводу совместимости с другими платформами
PM MAIL   Вверх
bars80080
Дата 25.9.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



это смотря какая платформа.
к примеру, если мы говорим о php, то там понятие сериализации даже не связано с xml, так там есть специальная функция serialize(), которая преобразует любую переменную/массив/объект в строку. в свою очередь была написана функция unserialize на ActionScript 2, причём написана она была из javascript-эквивалента этой функции.
соответственно, не сложно было бы написать и сериализующую функцию для AS3 из того же javascript-эквивалента

ну и написать аналоги на нужной вам платформе. а если учесть, что исходники php написаны на C, то может хватить покопаться в open-source коде php

во всяком случае мне этой штуки хватает, чтобы гонять данные между флэшем и сервером
а xml изобилует всякой кривизной. слишком уж он гибкий
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.1823 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.