30. XML Part3. FPXmlModel – сериализация/десериализация Модели данных

Серия статей посвященных работе с XML:
  1. XML Part1. Работа с xml-данными
  2. XML Part2. FPXmlParser – сериализация/десериализация XML строк
  3. XML Part3. FPXmlModel – сериализация/десериализация Модели данных

В предыдущей статье мы разбирали методы преобразования XML строк в Object, для последующего получения из него данных. А что если в приложение вся информация хранится не в Object, а в структурированной модели. Если вы еще не используете модели(Model) данных в своих приложениях – очень советую начать копать в этом направлении. Если вкратце Model – это некий класс который содержит в себе свойства объектов которые вы используете в приложении. Я не буду в этой статье рассказывать все преимущества этого способа хранения информации, но если вы решили хранить данные в модели – я расскажу вам как можно с помощью библиотеки FPXml быстро наполнить вашу модельку с информацией из XML строки.

Для сериализации/десериализации данных в библиотеке FPXml есть класс FPXmlModel. Рассмотрим небольшой пример: у вас есть базовый класс модели ModelApp, у него есть поля:

  1. id:String
  2. description:String
  3. settings:Settings


Код класса ModelApp:

Класс Settings имеет следующие поля:

  • param1:String
  • param2:String
  • param3:String

Код класса Settings:

Что бы наполнить такую модельку, можно воспользоваться следующей XML строкой:

Как это можно сделать в коде:

Массивы данных в модельке

Дополним нашу модельку(ModelApp) объектом UsersList который хранит массив(Array) пользователей(UserData).
Класс ModelApp:

Класс UsersList:

Класс UserData:

Для наполнения используем XML строку вида:

Обратите внимание на строку 7. В этой строке тег list это название параметра в классе UsersList. Далее идет параметр dataType=Array, вы можете использовать на выбор два значение Array или Vector. И последний параметр itemsClass – это полное имя(вместе с пакетом!) класса для дочерних элементов массива. В нашем случае itemsClass содержит имя класса UserData. Вы можете создать массив простых типов данных используя в параметре itemsClass значения:

  1. Number – число, например 3.5
  2. int – целое число, например -4
  3. uint – целое положительно число, например -4
  4. int16 – число в 16 формате, например код цвета
  5. String – строка
  6. Array – массив, значения передаются через символ ,
  7. Object – объект

Код десериализации модельки с массивом Array:

Автоматическое создание составных-объектов модели

Посмотрите на класс ModelApp, в конструкторе этого класс создаются пустые объекты Settings и UsersList. Это делать не обязательно если в XML строке вы укажите полное имя класса для его создания:

Задав в параметре class полное имя класса model.Settings, вам не придется создавать экземпляр класса Settings в конструкторе класса ModelApp. Он будет создан автоматически.

Скачать исходники с примером можно здесь. В этом исходнике имеется пример преобразования массива элементов UserData в векторы:

Скачать библиотеку FPXml.swc и почитать документацию можно здесь.

Серия статей посвященных работе с XML:
  1. XML Part1. Работа с xml-данными
  2. XML Part2. FPXmlParser – сериализация/десериализация XML строк
  3. XML Part3. FPXmlModel – сериализация/десериализация Модели данных

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 1091 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress:


  1. i

    Я не буду в этой статье рассказывать все преимущества этого способа хранения информации,

    Просто все читатели Вашего блога – ТРЕБУЮТ ЭТУ СТАТЬЮ!!!

    1. Serious Sam Автор записи

      Это очень обширная тема, и требует отдельной серии статей про методологию MVC (Model View Controller). Если эта тема интересна еще кому нибудь – я напишу об этом обязательно.

  2. i

    Если эта тема интересна еще кому нибудь – я напишу об этом обязательно.

    я могу показаться немного грубым…но Вы так не в коем случаи не подумайте!!!
    А стоит писать для тех ,кому эта тема будет не интересна? Ведь эта тема должна быть первой ,
    после того как научился рисовать квадратики)
    Лично мне очень хочется почитать про эту модель. И так же я был бы рад ,если бы вы её разбавили парами кульбитов с наследованием! И чтоб это был самый простой пример по изменению одного квадратика…и чтоб там весь код был напичкан просто вот САМЫМ пределом Ваших возможностей! А ещё было бы не плохо…ахаха…если бы Вы сделали такую тему…типа чата (для маленьких вопросов)…чтобы (не буду говорить у Кого то ,скажу как есть) когда у меня появлялись сумашедшие вопросы я их там задавал ,а вы отвечали по мере возможности))))
    и у Вас ссылка битая!

    Скачать библиотеку можно здесь.

    1. Serious Sam Автор записи

      Спасибо за ссылку – исправил :) Про модели данных и наследования я напишу обязательно. Кстати тему наследования я планировал подробно разобрать во второй главе книги. На счет темы для вопросов – я подумаю над этим.