|
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Цитата:
Вань, это вопрос преобразования данных. Я их также могу пропускать через некоторый посредник, преобразовывая в удобоваримый тип. И этот удобоваримый тип также может быть XML, а не массив объектов. Вот.
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Ну я такой подход не применяю, ибо это не есть хорошо Это скорее некое абстрактное суждение) Я написал это применительно к вопросу, в чем преимущество массива объектов перед xml.
Ну даже не так. Мне не нужно применять поход с посредником в принципе, ибо данные с сервера приходят в нормальном виде. И я спрашиваю, какой смысл мне перегонять данные из xml в массив объектов, ежели я получу ровно ту же самую структуру. Вот.
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) Последний раз редактировалось carrotoff; 16.12.2011 в 13:49. |
|
|||||
Вот пример как из xml делать VO, ну просто так для галочки сюда выложу :
package ***.model.vo { public class RecordInfoVO implements IValueObject { private var _contentName:String; private var _contentUrlkey:String; private var _contentUri:String; private var _contentPerformer:String; private var _recordId:uint; private var _recordUsername:String; private var _recordRate:uint; private var _recordFlvUrl:String; private var _recordPreviewUrl:String; private var _recordHasVideo:Boolean; private var _recordDuration:Number; private static var _loaded:Boolean = false; public static function load():void { if(_loaded != true) _loaded = true; } public static function get loaded():Boolean { return _loaded; } public function RecordInfoVO() { } public function parseXML(data:XML):void { this._contentName = data.content.name; this._contentUrlkey = data.content.urlkey; this._contentPerformer = data.content.performer; this._recordId = data.record.id; this._recordUsername = data.record.username; this._recordRate = data.record.rate; this._recordFlvUrl = data.record.flvurl; this._recordPreviewUrl = data.record.previewurl; this._contentUri = data.content.uri; this._recordHasVideo = Boolean(data.record.hasvideo); } public function get contentName():String { return this._contentName; } public function get contentUrlkey():String { return this._contentUrlkey; } public function get contentPerformer():String { return this._contentPerformer; } public function get recordId():uint { return this._recordId; } public function get recordUsername():String { return this._recordUsername; } public function get recordRate():uint { return this._recordRate; } public function get recordFlvUrl():String { return this._recordFlvUrl; } public function get recordPreviewUrl():String { return this._recordPreviewUrl; } public function get recordHasVideo():Boolean { return this._recordHasVideo; } public function get recordDuration():Number { return _recordDuration; } public function set recordDuration(value:Number):void { _recordDuration = value; } public function get contentUri():String { return _contentUri; } } }
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
wvxvw, Genzo
Я использую простую систему. Все объекты, которые заполняются из хмл, имеют конструктор вида function FromXMLObject(xml:XML=null) и там параметры раскидываются куда надо. когда прилетает хмл есть утилитная функция Когда-то раньше пробовал совсем универсально сделать, чтобы в хмл прилетало название класса, и совсем автоматом генерить, но потом получилось куча исключений, и решил писать руками.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
private function onSucces(e:Event):void { this._loader.removeEventListener(Event.COMPLETE, onSucces); this._loader.removeEventListener(IOErrorEvent.IO_ERROR, onError); this._loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onError); try{ var xml:XML = XML(this._loader.data); var voClass:Class = getDefinitionByName("***.model.vo." + (xml.localName() as String)) as Class; var data:IValueObject = new voClass(); data.parseXML(xml); this._loader.close(); this._loader = null; this.dispatchEvent(new XMLLoaderEvent(XMLLoaderEvent.DATA_LOADED , data)); }catch(e:*){ this.dispatchEvent(new XMLLoaderEvent(XMLLoaderEvent.DATA_ERROR)); } }
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Вот в текущем долгострое у меня то же самое, даже функция почти так же называется Ну в эпоху глобального рефакторинга встал вопрос о целесообразности таких действий. В новых проектах использую xml
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
решил открыть свой велосипед
https://bitbucket.org/Aquahawk/configmanager/ Тесты там ни к чёрту, доки нет, часть туду в коде, но я этим пользуюсь. Можно считать что это pre alpha Добавлено через 38 секунд гитигнор не настроен, билд скрипты не вынесены отдельно
__________________
:) |
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Цитата:
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
Часовой пояс GMT +4, время: 19:42. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|