SlideShare a Scribd company logo
1 of 10
Download to read offline
Форматы хранения данных
Олег Годовых
XML
eXtensible Markup Language — расширяемый язык разметки
<?xml version="1.0" encoding="UTF-8"?>
<addresses>
<address>
<name>Pupkin</name>
<city>Novosibirsk</city>
<street>Demakova</street>
<phone type=’mobile’>+79139130000</phone>
<documents>
<document type=’driving permit’>9045798749</document>
</documents>
</address>
<address>
<name>Losev</name>
<phone type=’home’>+73834913400</phone>
<documents>
<document type=’passport’>3451231231</document>
<document type=’driving permit’>43568749</document>
</documents>
</address>
</addresses>
2 Форматы хранения данных
XML
Плюсы:
Поддерживает Unicode.
Имеет строго заданный
синтаксис.
Стандартизован W3C.
Платформонезависим.
Есть язык преобразования
XSLT (можно, например,
сделать из XML валидный
HTML).
Минусы:
Синтаксис XML избыточен.
Размер существенно
больше, чем у других
форматов (JSON, YAML).
Неоднозначность
моделирования.
Нет поддержки типов
данных.
3 Форматы хранения данных
JSON
JavaScript Object Notation — текстовый формат обмена
данными, основанный на JavaScript.
{
"addresses": [
{
"name": "Pupkin",
"city": "Novosibirsk",
"street": "Demakova",
"phones": {
"mobile": "+79139130000"
},
"documents": {
"driving permit": "123DP"
}
},
{
"name": "Losev",
"phones": {
"home": "+73834913400"
},
"documents": {
"passport": "3451231231",
"driving permit": "43568749"
}
}
]
}
4 Форматы хранения данных
JSON
Плюсы:
Поддерживает Unicode.
Лаконичен.
Удобен для работы с
JavaScript (хипстерские
бэкенды на Node.js).
Более удобочитаем.
Большая часть бэкендов
отдаёт контент именно в
JSON.
Минусы:
Менее распространён как
формат хранения.
Выгрузка офисных
форматов зачастую
возможна только в XML.
Нет средств
преобразования,
встроенных в формат.
Меньше
стандартизованных
средств (таких, как XML
Schema, XPath, и т. д.).
5 Форматы хранения данных
DOM-парсер
Document Object Model — это не зависящий от платформы и
языка интерфейс, позволяющий программам получить доступ к
содержимому XML-документов, а также изменять содержимое,
структуру и оформление таких документов.
В памяти строится полное дерево, представляющее
документ.
Если документ «битый» — прочитать не удастся.
Можно выполнять различные запросы по структуре (XPath)
— //phone[@type=’mobile’]/text() выведет все
номера мобильных из документа в начале презентации.
6 Форматы хранения данных
SAX-парсер
SAX (англ. «Simple API for XML») — способ последовательного
чтения/записи XML-файлов (существуют аналоги и для JSON).
Push-парсер — мы обрабатываем события вида «начало
элемента», «начало атрибута».
Требуют фиксированного количества памяти для своей
работы.
Не позволяют изменять содержимое документа.
Валидируют документ по ходу чтения.
Можно прочесть часть «испорченного» документа.
Обычно быстрее, чем DOM-парсеры.
7 Форматы хранения данных
StAX-парсер
StAX (англ. «Streaming API for XML») — способ
последовательного чтения/записи XML-файлов (существуют
аналоги и для JSON)
Pull-парсер — мы не обрабатываем события, приходящие
от парсера, а сами инициируем обработку, вытягивая
токены.
Нам предоставляется курсор, с которым мы можем
перемещаться по токенам документа.
В Android нет самого StAX, но есть аналог — XmlPullParser.
8 Форматы хранения данных
Фреймворки
Позволяют делать парсинг автоматически, не задумываясь
о деталях.
Можно просто подавать класс с соответствующим
именованием полей.
Можно аннотациями задавать, что и как
сериализовать/десериализовать.
Могут возникнуть проблемы с «плохим» файлом или с
преобразованием структуры.
Разные фреймворки позволяют применять разные методы
для обхождения разных «подводных камней».
В основном они базируются на существующих DOM-
(изредка Stream-) парсерах.
9 Форматы хранения данных
Полезные ссылки
http://www.ibm.com/developerworks/ru/
library/x-android/
http://www.ibm.com/developerworks/ru/
library/x-andbene1/index.html
http://simple.sourceforge.net/
http://code.google.com/p/google-gson/
http://wiki.fasterxml.com/JacksonHome
http://android-arsenal.com
10 Форматы хранения данных

More Related Content

What's hot

Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"DataArt
 
SphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksSphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksRoman Pavlushko
 
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Ontico
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_rumcroitor
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализацииrit2010
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎mayperl
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?Tim Mironov
 
Gfi Archiver - больше, чем просто резервная копия!
Gfi Archiver - больше, чем просто резервная копия! Gfi Archiver - больше, чем просто резервная копия!
Gfi Archiver - больше, чем просто резервная копия! Expolink
 
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиКурсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиГлеб Тарасов
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Yandex
 
Semanticheskaya razmetka olga_ostrenkova
Semanticheskaya razmetka olga_ostrenkovaSemanticheskaya razmetka olga_ostrenkova
Semanticheskaya razmetka olga_ostrenkovayaevents
 

What's hot (19)

Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
Виктор Гунько "Трансфер данных: есть ли жизнь за пределами JSONa"
 
SphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksSphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricks
 
Бизнес почта
Бизнес почтаБизнес почта
Бизнес почта
 
имена файлов
имена файловимена файлов
имена файлов
 
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
Доменно специфичные базы данных и рассылка Aviasales, Борис Каплуновский (Avi...
 
Бизнес почта
Бизнес почтаБизнес почта
Бизнес почта
 
Бизнес почта
Бизнес почтаБизнес почта
Бизнес почта
 
XSLT - 1
XSLT - 1XSLT - 1
XSLT - 1
 
Dropbox
DropboxDropbox
Dropbox
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
03 web server_architecture_ru
03 web server_architecture_ru03 web server_architecture_ru
03 web server_architecture_ru
 
Rit 2010 реляционные олег царев субд и их нереляционные реализации
Rit 2010   реляционные олег царев субд и их нереляционные реализацииRit 2010   реляционные олег царев субд и их нереляционные реализации
Rit 2010 реляционные олег царев субд и их нереляционные реализации
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
 
Gfi Archiver - больше, чем просто резервная копия!
Gfi Archiver - больше, чем просто резервная копия! Gfi Archiver - больше, чем просто резервная копия!
Gfi Archiver - больше, чем просто резервная копия!
 
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с даннымиКурсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Semanticheskaya razmetka olga_ostrenkova
Semanticheskaya razmetka olga_ostrenkovaSemanticheskaya razmetka olga_ostrenkova
Semanticheskaya razmetka olga_ostrenkova
 

Similar to Android - 12 - Data types

C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.Igor Shkulipa
 
Design of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XMLDesign of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XMLAnton Moiseenko
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xmlolegol
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.Igor Shkulipa
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
XForms новое поколение веб-форм
XForms новое поколение веб-формXForms новое поколение веб-форм
XForms новое поколение веб-формAlexander Anokhin
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianMikhail Davydov
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Dmitriy Krukov
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
Элар Саперион. Единая корпоративная система управления электронными документа...
Элар Саперион. Единая корпоративная система управления электронными документа...Элар Саперион. Единая корпоративная система управления электронными документа...
Элар Саперион. Единая корпоративная система управления электронными документа...Корпорация ЭЛАР
 
МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7Dima Dzuba
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноVladislav Bezverhiy
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Yandex
 
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBТехнология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBFedor Malyshkin
 
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...it-people
 
Базы данных лекция №12
Базы данных лекция №12Базы данных лекция №12
Базы данных лекция №12Vitaliy Pak
 

Similar to Android - 12 - Data types (20)

C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.
 
Design of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XMLDesign of Information Systems. Lecture #1. XML
Design of Information Systems. Lecture #1. XML
 
Msu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced XmlMsu.Center.Lectures.J07 Advanced Xml
Msu.Center.Lectures.J07 Advanced Xml
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
XForms новое поколение веб-форм
XForms новое поколение веб-формXForms новое поколение веб-форм
XForms новое поколение веб-форм
 
JavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in RussianJavaScript on frontend and backend (in Russian
JavaScript on frontend and backend (in Russian
 
XML
XMLXML
XML
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5
 
Укрощение XML
Укрощение XMLУкрощение XML
Укрощение XML
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Элар Саперион. Единая корпоративная система управления электронными документа...
Элар Саперион. Единая корпоративная система управления электронными документа...Элар Саперион. Единая корпоративная система управления электронными документа...
Элар Саперион. Единая корпоративная система управления электронными документа...
 
МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7МАИ, Сети ЭВМ, Лекция №7
МАИ, Сети ЭВМ, Лекция №7
 
PostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. МолодёжноPostgreSQL. Стильно. Модно. Молодёжно
PostgreSQL. Стильно. Модно. Молодёжно
 
Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"Алексей Андросов "HTML5 в Я.Почте"
Алексей Андросов "HTML5 в Я.Почте"
 
Apache fop
Apache fopApache fop
Apache fop
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXBТехнология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
 
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
DUMP-2013 Наука и жизнь - Практические применения семантических вычислений - ...
 
Базы данных лекция №12
Базы данных лекция №12Базы данных лекция №12
Базы данных лекция №12
 

More from Noveo

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииNoveo
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Noveo
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Noveo
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Noveo
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Noveo
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Noveo
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Noveo
 
Yii2
Yii2Yii2
Yii2Noveo
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизацияNoveo
 
Rest
RestRest
RestNoveo
 
PHP basic
PHP basicPHP basic
PHP basicNoveo
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP AdvancedNoveo
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQLNoveo
 
MySQL
MySQLMySQL
MySQLNoveo
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Noveo
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)Noveo
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Noveo
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Noveo
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Noveo
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Noveo
 

More from Noveo (20)

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
Rest
RestRest
Rest
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
MySQL
MySQLMySQL
MySQL
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 

Android - 12 - Data types

  • 2. XML eXtensible Markup Language — расширяемый язык разметки <?xml version="1.0" encoding="UTF-8"?> <addresses> <address> <name>Pupkin</name> <city>Novosibirsk</city> <street>Demakova</street> <phone type=’mobile’>+79139130000</phone> <documents> <document type=’driving permit’>9045798749</document> </documents> </address> <address> <name>Losev</name> <phone type=’home’>+73834913400</phone> <documents> <document type=’passport’>3451231231</document> <document type=’driving permit’>43568749</document> </documents> </address> </addresses> 2 Форматы хранения данных
  • 3. XML Плюсы: Поддерживает Unicode. Имеет строго заданный синтаксис. Стандартизован W3C. Платформонезависим. Есть язык преобразования XSLT (можно, например, сделать из XML валидный HTML). Минусы: Синтаксис XML избыточен. Размер существенно больше, чем у других форматов (JSON, YAML). Неоднозначность моделирования. Нет поддержки типов данных. 3 Форматы хранения данных
  • 4. JSON JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript. { "addresses": [ { "name": "Pupkin", "city": "Novosibirsk", "street": "Demakova", "phones": { "mobile": "+79139130000" }, "documents": { "driving permit": "123DP" } }, { "name": "Losev", "phones": { "home": "+73834913400" }, "documents": { "passport": "3451231231", "driving permit": "43568749" } } ] } 4 Форматы хранения данных
  • 5. JSON Плюсы: Поддерживает Unicode. Лаконичен. Удобен для работы с JavaScript (хипстерские бэкенды на Node.js). Более удобочитаем. Большая часть бэкендов отдаёт контент именно в JSON. Минусы: Менее распространён как формат хранения. Выгрузка офисных форматов зачастую возможна только в XML. Нет средств преобразования, встроенных в формат. Меньше стандартизованных средств (таких, как XML Schema, XPath, и т. д.). 5 Форматы хранения данных
  • 6. DOM-парсер Document Object Model — это не зависящий от платформы и языка интерфейс, позволяющий программам получить доступ к содержимому XML-документов, а также изменять содержимое, структуру и оформление таких документов. В памяти строится полное дерево, представляющее документ. Если документ «битый» — прочитать не удастся. Можно выполнять различные запросы по структуре (XPath) — //phone[@type=’mobile’]/text() выведет все номера мобильных из документа в начале презентации. 6 Форматы хранения данных
  • 7. SAX-парсер SAX (англ. «Simple API for XML») — способ последовательного чтения/записи XML-файлов (существуют аналоги и для JSON). Push-парсер — мы обрабатываем события вида «начало элемента», «начало атрибута». Требуют фиксированного количества памяти для своей работы. Не позволяют изменять содержимое документа. Валидируют документ по ходу чтения. Можно прочесть часть «испорченного» документа. Обычно быстрее, чем DOM-парсеры. 7 Форматы хранения данных
  • 8. StAX-парсер StAX (англ. «Streaming API for XML») — способ последовательного чтения/записи XML-файлов (существуют аналоги и для JSON) Pull-парсер — мы не обрабатываем события, приходящие от парсера, а сами инициируем обработку, вытягивая токены. Нам предоставляется курсор, с которым мы можем перемещаться по токенам документа. В Android нет самого StAX, но есть аналог — XmlPullParser. 8 Форматы хранения данных
  • 9. Фреймворки Позволяют делать парсинг автоматически, не задумываясь о деталях. Можно просто подавать класс с соответствующим именованием полей. Можно аннотациями задавать, что и как сериализовать/десериализовать. Могут возникнуть проблемы с «плохим» файлом или с преобразованием структуры. Разные фреймворки позволяют применять разные методы для обхождения разных «подводных камней». В основном они базируются на существующих DOM- (изредка Stream-) парсерах. 9 Форматы хранения данных