SlideShare a Scribd company logo
Форматы хранения данных
Олег Годовых
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

PDF
XML, JSON (Lecture 11 – XML, JSON)
PPT
Hl2008 Hp Server Design 169
PPT
Introduction to MongoDB
PPTX
Бизнес почта
PPT
Как осуществить поиск в Интернете
ODP
Кратко о MongoDB
PPT
Оживление сайтов
PPS
Internet
XML, JSON (Lecture 11 – XML, JSON)
Hl2008 Hp Server Design 169
Introduction to MongoDB
Бизнес почта
Как осуществить поиск в Интернете
Кратко о MongoDB
Оживление сайтов
Internet

What's hot (19)

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

Similar to Android - 12 - Data types (20)

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

More from Noveo (20)

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