3. XML namespace
Позволяют относить элементы и атрибуты с одинаковыми именами к разным группам
Namespace обязательно является URI
Все элементы внутри пространства уникальны
5. Плюсы и минусы XML
Поддерживает Unicode
Имеет строго заданный
синтаксис
Стандартизирован W3C
Платформонезависим
Существует язык запросов к
элементам документа XPath
Существует язык
преобразования XSLT (eXtensible
Stylesheet Language
Transformations), позволяющий
трансформировать XML в HTML
Избыточный синтаксис
Существенно больший размер,
нежели JSON, YAML
Неоднозначность
моделирования (атрибуты vs
элементы)
Нет поддержки типов данных
6. JavaScript Object Notation
Является подмножеством YAML
Представлен как набор пар ключ-значение
Поддерживает несколько типов данных: строка, литерал (true/false/null), число, объект({}),
массив([])
8. Плюсы и минусы JSON
Поддерживает Unicode
Лаконичен
Нативная поддержка в
JacaScript
Удобочитаем
Большинство сервисов
используют именно для
передачи данных JSON
Менее распространен как
формат хранения
Выгрузка офисных форматов
зачастую возможна только в
XML
Нет средств преобразования
встроенных в формат
Меньше стандартизированных
средств (таких, как XPath, XML
Schema)
9. DOM, DOM-парсер
Document Object Model — это не зависящий от платформы и языка интерфейс, позволяющий
программам получить доступ к содержимому XML-документов, а также изменять содержимое,
структуру и оформление таких документов. В памяти строится полное дерево,
представляющее документ. Если документ «битый» — прочитать не удастся. Можно
выполнять различные запросы по структуре (XPath) — //phone[@type=’mobile’]/text() выведет
все номера мобильных из документа в начале презентации.
10. SAX-парсер
SAX (англ. «Simple API for XML») — способ последовательного чтения/записи XML-файлов
(существуют аналоги и для JSON). Push-парсер — мы обрабатываем события вида «начало
элемента», «начало атрибута». Требуют фиксированного количества памяти для своей работы.
Не позволяют изменять содержимое документа. Валидируют документ по ходу чтения. Можно
прочесть часть «испорченного» документа. Обычно быстрее, чем DOM-парсеры
11. StAX-парсер
StAX (англ. «Streaming API for XML») — способ последовательного чтения/записи XML-файлов
(существуют аналоги и для JSON) Pull-парсер — мы не обрабатываем события, приходящие от
парсера, а сами инициируем обработку, вытягивая токены. Нам предоставляется курсор, с
которым мы можем перемещаться по токенам документа. В Android нет самого StAX, но есть
аналог — XmlPullParser
12. Фреймворки
Позволяют делать парсинг автоматически, не задумываясь о деталях.
Можно просто подавать класс с соответствующим именованием полей.
Можно аннотациями задавать, что и как сериализовать/десериализовать.
Могут возникнуть проблемы с «плохим» файлом или с преобразованием структуры.
Разные фреймворки позволяют применять разные методы для обхождения разных
«подводных камней».
В основном они базируются на существующих DOM- (изредка Stream-) парсерах