xml, json (lecture 11 – xml, json)

13
XML, JSON Android Константин Золотов

Upload: noveo

Post on 26-Jan-2017

93 views

Category:

Education


0 download

TRANSCRIPT

Page 1: XML, JSON (Lecture 11 – XML, JSON)

XML, JSONAndroid

Константин Золотов

Page 2: XML, JSON (Lecture 11 – XML, JSON)

eXtensible Markup Language 1 <?xml version="1.0" encoding="UTF-8"?> 2 <addresses> 3 <address> 4 <name>Pupkin</name> 5 <city>Novosibirsk</city> 6 <street>Demakova</street> 7 <phone type="mobile">+79139130000</phone> 8 <documents> 9 <document type="driving permit">9045798749</document> 10 </documents> 11 </address> 12 <address> 13 <name>Losev</name> 14 <phone type="home">+73834913400</phone> 15 <documents>16 <document type="passport">3451231231</document> 17 <document type="driving permit">43568749</document> 18 </documents> 19 </address> 20 </addresses>

Page 3: XML, JSON (Lecture 11 – XML, JSON)

XML namespace

Позволяют относить элементы и атрибуты с одинаковыми именами к разным группамNamespace обязательно является URIВсе элементы внутри пространства уникальны

Page 4: XML, JSON (Lecture 11 – XML, JSON)

XML namespace 1 <root> 2 <h:table xmlns:h="http://www.w3.org/TR/html4/"> 3 <h:tr> 4 <h:td>Apples</h:td> 5 <h:td>Bananas</h:td> 6 </h:tr> 7 </h:table> 8 9 <f:table xmlns:f="http://www.w3schools.com/furniture"> 10 <f:name>African Coffee Table</f:name> 11 <f:width>80</f:width> 12 <f:length>120</f:length> 13 </f:table> 14 </root>

Page 5: XML, JSON (Lecture 11 – XML, JSON)

Плюсы и минусы XMLПоддерживает UnicodeИмеет строго заданныйсинтаксисСтандартизирован W3CПлатформонезависимСуществует язык запросов кэлементам документа XPathСуществует языкпреобразования XSLT (eXtensibleStylesheet LanguageTransformations), позволяющийтрансформировать XML в HTML

Избыточный синтаксисСущественно больший размер,нежели JSON, YAMLНеоднозначностьмоделирования (атрибуты vsэлементы)Нет поддержки типов данных

Page 6: XML, JSON (Lecture 11 – XML, JSON)

JavaScript Object Notation

Является подмножеством YAMLПредставлен как набор пар ключ-значениеПоддерживает несколько типов данных: строка, литерал (true/false/null), число, объект({}),массив([])

Page 7: XML, JSON (Lecture 11 – XML, JSON)

JavaScript Object Notation 1 {"addresses": [ 2 { 3 "name": "Pupkin", 4 "city": "Novosibirsk", 5 "street": "Demakova", 6 "phones": { 7 "mobile": "+79139130000" 8 }, 9 "documents": { 10 "driving permit": "123DP" 11 } 12 }, 13 { 14 "name": "Losev", 15 "phones": { 16 "home": "+73834913400" 17 }, 18 "documents": { 19 "passport": "3451231231", 20 "driving permit": "43568749" 21 } 22 } 23 ]}

Page 8: XML, JSON (Lecture 11 – XML, JSON)

Плюсы и минусы JSONПоддерживает UnicodeЛакониченНативная поддержка вJacaScriptУдобочитаемБольшинство сервисовиспользуют именно дляпередачи данных JSON

Менее распространен какформат храненияВыгрузка офисных форматовзачастую возможна только вXMLНет средств преобразованиявстроенных в форматМеньше стандартизированныхсредств (таких, как XPath, XMLSchema)

Page 9: XML, JSON (Lecture 11 – XML, JSON)

DOM, DOM-парсер

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

структуру и оформление таких документов. В памяти строится полное дерево,представляющее документ. Если документ «битый» — прочитать не удастся. Можно

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

Page 10: XML, JSON (Lecture 11 – XML, JSON)

SAX-парсер

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

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

прочесть часть «испорченного» документа. Обычно быстрее, чем DOM-парсеры

Page 11: XML, JSON (Lecture 11 – XML, JSON)

StAX-парсер

StAX (англ. «Streaming API for XML») — способ последовательного чтения/записи XML-файлов(существуют аналоги и для JSON) Pull-парсер — мы не обрабатываем события, приходящие отпарсера, а сами инициируем обработку, вытягивая токены. Нам предоставляется курсор, скоторым мы можем перемещаться по токенам документа. В Android нет самого StAX, но есть

аналог — XmlPullParser

Page 12: XML, JSON (Lecture 11 – XML, JSON)

Фреймворки

Позволяют делать парсинг автоматически, не задумываясь о деталях.Можно просто подавать класс с соответствующим именованием полей.Можно аннотациями задавать, что и как сериализовать/десериализовать.Могут возникнуть проблемы с «плохим» файлом или с преобразованием структуры.Разные фреймворки позволяют применять разные методы для обхождения разных«подводных камней».В основном они базируются на существующих DOM- (изредка Stream-) парсерах