XML и его разновидности — один из популярных способов передачи данных. Плюсом такого подхода является то, что вся информация представлена в обычном текстовом формате, который легко изменить. Для создания таких файлов не нужно никаких особенных программных средств, достаточно простого текстового редактора наподобие блокнота.
Но представьте себе ситуацию, когда вам нужно передать не 10-20 позиций, а всю базу интернет магазина. А там позиций, так, 500, а то и 1000. И каждая имеет несколько свойств. При этом одно из них — описание, вмещает весомое количество символов.
И тут появляется мысль о том, что такие объемы хотелось бы архивировать на стороне сервера и передавать их во flash в виде архива, размеры которого значительно меньше — текстовые данные отлично поддаются сжатию.
Как упаковать данные на сервере, известно многим, а вот как их загрузить и распаковать во flash — нет. Об том, как это сделать, и пойдет речь в этой статье.
Первое, что вам необходимо, — это закачать исходники от Claus Wahlers и Max Herkender. Это очень удобный и простой набор классов, который позволяет получать и распаковывть zip-архивы на стороне клиента во flash-приложениях.
Закачать их вы можете, перейдя по этой ссылке.
После закачки положите папку deng в папку com вашего проекта. Или в соответствии со своей собственной структурой, если она отличется от указанной.
Получение данных с сервера в zip-архиве
Тут все действительно просто.
import com.deng.fzip.*; import flash.net.URLRequest; private function loadZIP():void { var fZIP:FZip = new FZip; fZIP.addEventListener(FZipEvent.FILE_LOADED, onLoaded);
//Закачиваем файл, находящийся по указанному пути fZIP.load(new URLRequest("path/to/zip/file/db.zip")); }
Распаковка и запись данных в XML
А здесь еще проще.
db.xml — это файл, лежащий внутри архива db.zip
private function onLoaded(e:FZipEvent):void { var file:FZipFile = fZIP.getFileByName("db.xml"); var xml:XML = new XML(file.getContentAsString()); e.target.removeEventListener(FZipEvent.FILE_LOADED, onLoaded); }
Вот, собственно говоря, и все. Ну и, конечно, кому действительно интересно, может покрутить эти классы, дабы посмотреть на все предоставленные ими возможности.