android - 12 - data types

10

Click here to load reader

Upload: noveo

Post on 22-Jun-2015

139 views

Category:

Technology


1 download

DESCRIPTION

Small talk about XML and JSON

TRANSCRIPT

Page 1: Android - 12 - Data types

Форматы хранения данных

Олег Годовых

Page 2: Android - 12 - Data types

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 Форматы хранения данных

Page 3: Android - 12 - Data types

XML

Плюсы:I Поддерживает Unicode.I Имеет строго заданныйсинтаксис.

I Стандартизован W3C.I Платформонезависим.I Есть язык преобразованияXSLT (можно, например,сделать из XML валидныйHTML).

Минусы:I Синтаксис XML избыточен.I Размер существеннобольше, чем у другихформатов (JSON, YAML).

I Неоднозначностьмоделирования.

I Нет поддержки типовданных.

3 Форматы хранения данных

Page 4: Android - 12 - Data types

JSONJavaScript 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 Форматы хранения данных

Page 5: Android - 12 - Data types

JSON

Плюсы:I Поддерживает Unicode.I Лаконичен.I Удобен для работы сJavaScript (хипстерскиебэкенды на Node.js).

I Более удобочитаем.I Большая часть бэкендовотдаёт контент именно вJSON.

Минусы:I Менее распространён какформат хранения.

I Выгрузка офисныхформатов зачастуювозможна только в XML.

I Нет средствпреобразования,встроенных в формат.

I Меньшестандартизованныхсредств (таких, как XMLSchema, XPath, и т. д.).

5 Форматы хранения данных

Page 6: Android - 12 - Data types

DOM-парсер

Document Object Model — это не зависящий от платформы иязыка интерфейс, позволяющий программам получить доступ ксодержимому XML-документов, а также изменять содержимое,структуру и оформление таких документов.

I В памяти строится полное дерево, представляющеедокумент.

I Если документ «битый» — прочитать не удастся.I Можно выполнять различные запросы по структуре (XPath)— //phone[@type=’mobile’]/text() выведет всеномера мобильных из документа в начале презентации.

6 Форматы хранения данных

Page 7: Android - 12 - Data types

SAX-парсер

SAX (англ. «Simple API for XML») — способ последовательногочтения/записи XML-файлов (существуют аналоги и для JSON).

I Push-парсер — мы обрабатываем события вида «началоэлемента», «начало атрибута».

I Требуют фиксированного количества памяти для своейработы.

I Не позволяют изменять содержимое документа.I Валидируют документ по ходу чтения.I Можно прочесть часть «испорченного» документа.I Обычно быстрее, чем DOM-парсеры.

7 Форматы хранения данных

Page 8: Android - 12 - Data types

StAX-парсер

StAX (англ. «Streaming API for XML») — способпоследовательного чтения/записи XML-файлов (существуютаналоги и для JSON)

I Pull-парсер — мы не обрабатываем события, приходящиеот парсера, а сами инициируем обработку, вытягиваятокены.

I Нам предоставляется курсор, с которым мы можемперемещаться по токенам документа.

I В Android нет самого StAX, но есть аналог — XmlPullParser.

8 Форматы хранения данных

Page 9: Android - 12 - Data types

Фреймворки

I Позволяют делать парсинг автоматически, не задумываясьо деталях.

I Можно просто подавать класс с соответствующимименованием полей.

I Можно аннотациями задавать, что и каксериализовать/десериализовать.

I Могут возникнуть проблемы с «плохим» файлом или спреобразованием структуры.

I Разные фреймворки позволяют применять разные методыдля обхождения разных «подводных камней».

I В основном они базируются на существующих DOM-(изредка Stream-) парсерах.

9 Форматы хранения данных

Page 10: Android - 12 - Data types

Полезные ссылки

I http://www.ibm.com/developerworks/ru/library/x-android/

I http://www.ibm.com/developerworks/ru/library/x-andbene1/index.html

I http://simple.sourceforge.net/I http://code.google.com/p/google-gson/I http://wiki.fasterxml.com/JacksonHomeI http://android-arsenal.com

10 Форматы хранения данных