1. Что такое XML формат
Применяется формат XML сразу в нескольких направлениях:
- верстка сайтов
- систематизированное оформление таблиц
- базы данных
- настройки запуска приложений
Читаемость – главная идея XML-документа. Даже без дополнительных инструментов можно открыть файл и, бегло пробежавшись глазами по описанным символам, легко разобраться, какие инструкции заложены внутри, и какие события запустятся при непосредственном использовании по прямому назначению.
Базируется язык разметки на кодировке Юникод (UTF-8 и UTF-16) и легко подстраивается под любые конкретные нужды (главное соблюдать некоторые обязательные правила – к примеру, размещать в первой строчке документа обязательную конструкцию, определяющую версию XML, кодировке и подключаемых библиотеках). Но то лишь нюансы – куда важнее разобраться, как можно открыть документ XML и получить информативный текст, а не набор неразборчивых символов.
Итак, рассмотрим популярные способы для открытия XML файл.
2. Открыть XML через блокнот
Операционная система Windows в предустановленном состоянии сразу же способна взаимодействовать с файлами практически любых текстовых форматов. Да, не вся информация выглядит в первозданном виде (некоторые символы из-за нечитаемой кодировки отображаются некорректно) и все же уловить основную суть не проблема! Главное – вооружиться терпением и перепробовать все возможные настройки. Какие? Инструкция ниже:
1. Первая задача – загрузить нужный файл на компьютер в любую папку. Дальше остается или заглянуть в пуск, набрав в поиске «Блокнот», а там уж открыть документ.
Или перейти к конкретному каталогу, куда загружен XML документ, и уже оттуда вызывать меню взаимодействия и выбирать нужное действие.
Если же в вызываемом списке не появился «Блокнот», то придется нажать на пункт «Выбрать другое приложение». И уже оттуда нажать на необходимую кнопку.
2. Как результат – документ открыт в первозданном виде. Теги, атрибуты, описание действий. Да, не слишком информативно (в сути разберутся лишь программисты и верстальщики), а потому – стоит искать альтернативные источники вдохновения.
3. Открыть XML через браузеры
Раз уж формат XML появился для экспериментального «строительства» сайтов (на данный момент нишу верстки занимает HTML и таблица стилей CSS), то и Google Chrome и Mozilla Firefox с легкостью воспринимают всю спрятанную в документах информацию. Да еще и выводят все теги и атрибуты не только в виде текста, но и в соответствии с определенным оформлением (если внутри описана таблица, то на выходе появится информация, уложенная по полочкам строчек и столбцов).
Как загрузить XML в браузер? Элементарно! Можно спокойненько перетащить требуемый документ в любое открытое окно, а дальше останется лишь наблюдать за результатом.
И вот весь текст на экране, в строке поиска – каталог размещения открывшегося файла, а по центру экрана – несколько рекомендаций непосредственно от браузера. К примеру, Google Chrome может предупредить, нарушен ли где-то синтаксис, нужны ли дополнительные правки и почему, собственно, возникают проблемы.
В Firefox ситуация та же, правда, ошибки и предупреждения выводятся на русском языке!
Стоит ли всегда открывать XML через браузер? Однозначно ответить на вопрос невозможно. С одной стороны – можно сразу же посмотреть, как выглядит формат не «на бумаге», а в действии. Кроме того, кодировку не нужно выбирать (определяется автоматически), да и устанавливать дополнительные программы не нужно. Но то лишь со стороны непосредственного использования. Если же нужны правки, изменения или хоть какое-то взаимодействие с документов, то без дополнительных приложений точно не обойтись.
4. XML файлы через продукты Microsoft Office
Пакет программ от Microsoft с файлами XML взаимодействовать умеет, но лишь по части отображения конечной информации (после выполнения всех процессоров, заложенных в документе), а не для непосредственного взаимодействия и редактирования. И Word, и Excel сработают, как калькуляторы, в которые занесли целый пример, и нажали кнопку «Посчитать». В итоге, на экране и появится результат, без какой-либо дополнительной информации.
4.1. Открыть XML в Microsoft Word:
1. Тут два пути, как и с блокнотом. Можно или сразу открыть приложение и в выпадающем меню выбрать «Открыть».
Или же перейти в необходимый каталог и уже оттуда, нажав правой кнопкой, вызвать список действий.
2. Вне зависимости от выбранного маршрута, результат одинаковый. На экране появится какая-то определенная информация без тегов и атрибутов, лишь голый текст.
Как отмечает Word, офисного набора для отображения XML в другом виде недостаточно, нужны дополнительные плагины и инструкции, устанавливаемые «сверху». В ином случае, можно и не рассчитывать на полноценное взаимодействие.
4.2. Открыть XML в Microsoft Excel:
1. Первоначальные действия все те же.
2. Из реальных отличий – необходимость выбрать сценарий при взаимодействии с XML. Стоит ли Excel открывать все данные, как таблицу или же в виде книги с определенными задачами.
3. Перепробовать можно разные варианты, однако результат такой же, как и в Word – текст, появившийся после обработки всех тегов, атрибутов и процессов, но разбитый на ячейки.
Словом, пакет офисных программ от Microsoft не выполняет и половины требуемых задач – не позволяет редактировать текст, не отображает системные данные, да еще и с трудом обрабатывает некоторую информацию и частенько выдает ошибки. Кроме того, в последних версиях Word и Excel за 2016 год, разработчики практически отказались от возможности взаимодействия с XML, а потому и рассчитывать на подобного со скрипом работающего помощника точно не стоит.
5. Официальные редакторы для открытия XML
Список программ, специализирующихся на взаимодействии с XML огромен, из-за чего невозможно перечислить и половины вариантов. А потому – инструкция по использованию на примере XML Marker, бесплатно распространяемом инструменте, воспринимаемом разную кодировку, подсвечивающем синтаксис, отображающем одновременно и древо документа, и всю текстовую информацию. Кроме того, разработчики обещают автоматические обновления, исправляющие некоторые ошибки и недоработки, целую коллекцию дополнительных советов и рекомендаций, позволяющих, к примеру, избавиться от каких-нибудь ошибок при вводе (даже некоторые неправильно заданные теги в конце информационного кода могут привести к проблемам при воспроизведении).
Из дополнительных плюсов – поддержка разных языков, возможность менять формат, а еще – невероятная скорость обработки данных (даже состоящие из тысячи ячеек таблицы открываются за считанные секунды). И, раз уж подобный редактор настолько всесилен, почему бы не приступить к установке?
1. Прежде всего, придется заглянуть на официальный сайт. И в меню слева найти кнопку Download.
На открывшейся странице остается лишь выбрать необходимую для загрузки версию. Доступно несколько вариантов – и совсем «древние» и «тестируемые», и последние со всеми необходимыми обновлениями. Вариантов, с какого сервера все сохранять, тоже несколько – тут уж дело вкуса (в любом случае, дистрибутив весит всего несколько десятков мегабайт).
2. Дальше – запустить дистрибутив, прочитать строки приветствия, нажать Next.
Принять все лицензии и пользовательское соглашение.
Выбрать папку для установки (какой-то гигантской разницы нет).
Последний этап – выбрать, нужны ли ярлыки на рабочем столе и в меню «Пуск», и стоит ли ассоциировать формат «XML» с программой. Если подобной необходимости нет, то все галочки можно спокойно поснимать.
После завершения установки останется лишь запустить инструмент и приступить к непосредственному использованию.
3. Итак, для запуска нужного файла нужно нажать на пункт «File» и вызвать выпадающее меню, затем – кликнуть на «Open» для непосредственного перехода к поиску.
После открытия на экране появится все сохраненная в документе информация, с поддержкой всех атрибутов и тегов. Кроме того, любые данные разрешат править и изменять, а затем – просматривать визуальные копии в дополнительном окне.
Ну, и коротко о ключевых возможностей. Слева – иерархия всех данных (какие теги складываются, какая информация важнее и все остальное), справа – выделенный код, снизу – отображение. Если появятся какие-то ошибки, то система сразу же обо всем предупредит, да еще и выделит место, где нужны срочные изменения.
В общем, идеальный инструмент для тех, кто не просто что-то открывает, а реально взаимодействует и применяет.
Из минусов – цена. Разработчики предлагают или абонентскую плату с переводом денег каждый месяц, или одноразовый платеж. Впрочем, опробовать инструмент можно совершенно бесплатно без функциональных ограничений, но на основе пробного периода.
6. Редактирование XML-файлов онлайн
Если необходимость платить реальные деньги за виртуальный продукт не по нраву, то остается последний вариант – воспользоваться редактором, который читает формат XML онлайн. Ресурсов с подобным функционалом много, но главный помощник расположен по адресу – xmlgrid.net
Из ключевых возможностей – запуск нужного файла через вкладку непосредственного «Открытия». Еще можно вставлять ссылку на документ и применять теги и атрибуты вручную и с нуля. Кроме воспроизведения, можно посмотреть демонстрацию о языке XML, где разработчики постарались объяснить способы применения различных возможностей и варианты использования разметки.
Что представляет собой файл XML
Начнем, пожалуй, с того, что, с точки зрения современных компьютерных технологий и программ, используемых для создания документов такого типа, формат XML представляет собой текстовый файл, в котором прописаны команды универсального расширяемого языка (Extensible Markup Language), который достаточно сильно напоминает известное средство разметки HTML.
Как правило, файл XML содержит общую информацию о каком-либо объекте, которая выражена описательными средствами (об этом несколько позже). Что же касается данных, хранимых в таких контейнерах, это могут быть базы данных, часто используемые для каталогов видео и аудио в Интернете, сохраненные пользовательские настройки программ и приложений, а также веб-страницы целиком.
В качестве примера можно взять, скажем, аудио-альбом какого-то исполнителя. Файл XML включает в себя информацию о годе выпуска, жанре, количестве и названиях треков, популярности и т. д. Правда, при посещении ресурсов во Всемирной паутине серферу не нужно задумываться о физическом открытии такого информационного файла, поскольку даже при воспроизведении песни онлайн в проигрывателе будут отображаться все данные по типу тех, которые содержатся в стандартных MP3-файлах в виде ID3-тегов. Информация как бы подгружается к воспроизводимому треку.
Вид XML-файла
Если посмотреть на вид файла, можно сразу заметить, что в нем свойства любого объекта описаны при помощи тегов и атрибутов, которые задаются вручную.
Об основных командах самого языка речь сейчас не идет, поскольку рядовому юзеру такие сведения и не нужны. Единственное, что можно отметить, так это только то, что определенного количества используемых для описания объекта элементов в данном формате не существует: сколько нужно, столько и задается.
Чем открыть стандартный XML-формат
Теперь посмотрим, как открыть файл XML. Как уже, наверное, многие поняли, это файл текстовый, а значит, проще всего использовать для его просмотра или редактирования любой, пусть даже самый примитивный редактор. Да хоть тот же «Блокнот» из стандартного набора Windows.
Однако здесь не все так просто. Дело в том, что по двойному клику файл без задания соответствующей ассоциации с какой-либо программой не откроется. В лучшем случае система предложит список наиболее подходящих приложений. Можно выбрать программу по своему усмотрению, а заодно поставить галочку напротив пункта постоянного использования выбранного приложения для всех файлов такого типа.
Можно поступить иначе, используя правый клик на файле с последующим выбором команды «Открыть с помощью…», после чего, опять же, выбрать нужное приложение либо из списка, либо указать местоположение основного исполняемого компонента (чаще всего это файл EXE).
Третий способ, позволяющий открыть файл XML, состоит в начальном запуске программы, а затем в использовании меню открытия файла (в большинстве случаев это сочетание Ctrl + O). При этом совершенно необязательно использовать «Блокнот». Пожалуйста, файл открывается без всяких проблем в том же приложении Word и ему подобных. Даже «майкрософтовский» Excel способен открывать данные такого формата.
Впрочем, если возникает необходимость редактирования XML-формата, тогда лучше применять профессиональные утилиты с поддержкой языкового синтаксиса, например, Oxygen XML Editor, XML Marker или EditiX Lite Version. Естественно, это далеко не все утилиты, способные работать с языком файла на высшем уровне. Сегодня таких программ можно найти очень много.
Теперь несколько слов о том, почему иногда появляется ошибка XML-файла при открытии. Чаще всего это связано с нарушением целостности самого файла, а также с некорректным введением описательных атрибутов или тегов. Кроме того, в Excel существует ограничение по лимиту отображаемых строк, так что в этом случае данные при открытии могут быть неполными.
Возможные ошибки при открытии XML-файла в виде вложения электронной почты
Иногда ошибки могут появляться, когда производится попытка открытия файла, являющегося вложением электронного сообщения. Чащу всего это относится к стандартным почтовым клиентам вроде Outlook Express.
Дело в том, что сначала вложение сохраняется в виде временных данных (очень часто с добавлением к основному расширению дополнительного .tmp), и обращение производится именно к нему.
Чтобы избежать такой ситуации, достаточно просто изначально сохранить вложение в оригинальном формате в любое удобное место на диске или на съемном носителе, после чего использовать описанные выше стандартные методы.
Вместо итога
Как видим, ничего сложного в понимании структуры и способов открытия файлов такого формата нет. Здесь, правда, принципиально не рассматривался вопрос создания XML-данных, поскольку для полного понимания процесса нужно знать хотя бы азы самого языка. В остальном же, думается, сложностей с файлами такого формата у пользователей не возникнет.
XML ( /ˌeks em ˈel/ англ. eXtensible Markup Language ) — расширяемый язык разметки. Рекомендован Консорциумом Всемирной паутины (W3C). Спецификация XML описывает XML-документы и частично описывает поведение XML-процессоров (программ, читающих XML-документы и обеспечивающих доступ к их содержимому). XML разрабатывался как язык с простым формальным синтаксисом, удобный для создания и обработки документов программами и одновременно удобный для чтения и создания документов человеком, с подчёркиванием нацеленности на использование в Интернете. Язык называется расширяемым, поскольку он не фиксирует разметку, используемую в документах: разработчик волен создать разметку в соответствии с потребностями к конкретной области, будучи ограниченным лишь синтаксическими правилами языка. Расширение XML — это конкретная грамматика, созданная на базе XML и представленная словарём тегов и их атрибутов, а также набором правил, определяющих какие атрибуты и элементы могут входить в состав других элементов. Сочетание простого формального синтаксиса, удобства для человека, расширяемости, а также базирование на кодировках Юникод для представления содержания документов привело к широкому использованию как собственно XML, так и множества производных специализированных языков на базе XML в самых разнообразных программных средствах.
XML является подмножеством SGML.
Содержание
Язык XML [ править | править код ]
Спецификация XML описывает язык и ряд вопросов, касающихся кодировки и обработки документов. Материал этой секции представляет собой сокращённое изложение описания языка в Спецификации XML, адаптированное для настоящей статьи.
Нормативным считается английский вариант документа, поэтому основные термины приводятся с их английскими оригиналами.
Перевод основных терминов в основном следует доступному в интернете переводу Спецификации на русский язык, исключение составляют термины tag и declaration. Для термина tag здесь используется перевод тег. Для термина declaration отдано предпочтение распространённому переводу объявление (против также распространённой кальки декларация).
В литературе и интернете могут встречаться и иные переводы основных терминов.
Физическая и логическая структуры документа [ править | править код ]
С физической точки зрения документ состоит из сущностей (англ. entities ), из которых каждая может отсылать на другую сущность. Единственный корневой элемент — документная сущность. Содержание сущностей — символы.
С логической точки зрения документ состоит из комментариев (англ. comments ), объявлений (англ. declarations ), элементов (англ. elements ), ссылок на сущности (англ. character references ) и инструкций обработки (англ. processing instructions ). Всё это в документе структуризуется разметкой (англ. markup ).
Физическая структура [ править | править код ]
Сущность — мельчайшая часть в документе. Все сущности что-нибудь содержат, и у всех них есть имя (существуют исключения, напр. документная сущность). Проще говоря, термин «сущность» описывает «сущую вещь», «что-то» [6] .
Документ состоит из сущностей, содержание которых — символы. Все они разделены на два типа: символьные данные (англ. character data ) и разметки. К разметке принадлежат: теги (англ. tags ), обозначающие границы элементов, объявления и инструкции обработки, включая их атрибуты (англ. attributes ), ссылки на сущности, комментарии, а также последовательности символов, обрамляющие секции «CDATA». Часть документа, не принадлежащая разметке, составляет символьные данные документа.
Логическая структура [ править | править код ]
Все составляющие части документа обобщаются в пролог и корневой элемент. Корневой элемент — обязательная часть документа, составляющая всю его суть (пролог, вообще говоря, может отсутствовать). Может включать (а может не включать) вложенные в него элементы и символьные данные, а также комментарии. Вложенные в корневой элемент элементы, в свою очередь, могут включать вложенные в них элементы, символьные данные и комментарии, и так далее. Пролог может включать объявления, инструкции обработки, комментарии. Его следует начинать с объявления XML, хотя в определённой ситуации допускается отсутствие этого объявления.
Элементы документа должны быть правильно вложены: любой элемент, начинающийся внутри другого элемента (то есть любой элемент документа, кроме корневого), должен заканчиваться внутри элемента, в котором он начался. Символьные данные могут встречаться внутри элементов как непосредственно так и в специальных секциях «CDATA». Объявления, инструкции обработки и элементы могут иметь связанные с ними атрибуты. Атрибуты используются для связывания с логической единицей текста пар имя-значение.
Символы разметки [ править | править код ]
Разметка всегда начинается символом и заканчивается символом > . Наряду с символами и > , специальную роль для разметки играет также символ & . Угловые скобки обозначают границы элементов, инструкций обработки и некоторых других последовательностей. Амперсанд позволяет выполнить замену текста при помощи сущностей (англ. entities ) [6] [7] .
Решение проблемы неоднозначности разметки [ править | править код ]
Употребление разметочных символов в символьных данных затрудняет распознавание конструкций разметки и может создать проблему неоднозначности структуры. В XML эта проблема решается следующим образом:
Кроме того, для употребления апострофов и кавычек внутри значений атрибутов используются следующие сущности:
Правило замены символов, используемых в разметке, на ими обозначаемые сущности не распространяется на символьные данные в секциях «CDATA», зато выполняется во всех остальных местах документа.
Имена [ править | править код ]
В языке XML все имена должны начинаться с буквы, символа подчёркивания (_) или двоеточия (:) и продолжаться только допустимыми для имён символами, а именно они могут содержать только буквы, входящие в секцию букв кодировки Unicode, арабские цифры, дефисы, знаки подчёркивания, точки и двоеточия. Однако имена не могут начинаться со строки xml в любом регистре. Имена, начинающиеся с этих символов, зарезервированы для использования консорциумом W3C. Нужно помнить, что так как буквы не ограничены исключительно символами ASCII, то в именах можно использовать слова из родного языка.
Пролог [ править | править код ]
Объявление XML [ править | править код ]
Объявление XML указывает версию языка, на которой написан документ. Поскольку интерпретация содержимого документа зависит от версии языка, то Спецификация предписывает начинать документ с объявления XML. В первой (1.0) версии языка использование объявления не было обязательным, в последующих версиях оно обязательно. Таким образом, версия языка определяется из объявления, и если объявление отсутствует, то принимается версия 1.0.
Кроме версии XML,объявление может также содержать информацию о кодировке документа и «оставаться ли документу со своим собственным DTD, или с подключённым».
Во всех этих примерах отсутствовал атрибут «standalone», который как раз и определяет, подключить ли документу описания разметки извне. По умолчанию он равен «no»:
если XML-документ ссылается на другие DTD-файлы, которые описывают, что документ может содержать, вы должны указать standalone="no"
если XML-документ не ссылается на другие файлы и будет пользоваться своим DTD, вы должны указать standalone="yes"
Объявление типа документа [ править | править код ]
Для объявления типа документа существует специальная инструкция !DOCTYPE . Она позволяет задать при помощи языка DTD, какие в документ входят элементы, каковы их атрибуты, какие сущности могут использоваться и кое-что ещё.
Например, вот корректный документ:
В нём есть корневой элемент Hello, world! , и с логической точки зрения документ существует. Однако он недействителен (англ. not valid ) [8] .
При помощи Объявления типа документа (DTD) возможно описывать его содержание и логическую структуру, а также связывать с определённым элементом пару «имя — значение».
Запишем, как выглядит пролог, используя запись Бэкуса — Наура [9] :
Мы видим, что после XML-объявления могут следовать комментарии, инструкции обработки или же пустые пространства [10] , но затем идёт Объявления типа документа, где «Name» — имя корневого тега, «External >[11] .
Здесь « SYSTEM "hello.dtd" » — внешний идентификатор: адрес «hello.dtd» позволяет задействовать данные в документе «hello.dtd» как объявления разметки.
Здесь же разметка была объявлена местно.
Инструкция обработки [ править | править код ]
Инструкции обработки (англ. processing instruction, PI ), позволяют размещать в документе инструкции для приложений. В следующем примере показана инструкция обработки, передающая xml-stylesheet-приложению (например, браузеру) инструкции в файле my-style.css посредством атрибута href:
Комментарий [ править | править код ]
Комментарии (англ. comment ) не относятся к символьным данным документа. Комментарий начинается последовательностью « », внутри не может встречаться комбинация символов «—». Символ & не используется внутри комментария в качестве разметки.
Корневой элемент [ править | править код ]
Элемент и его разметка [ править | править код ]
Элемент (англ. element ) является понятием логической структуры документа. Каждый документ содержит один или несколько элементов. Границы элементов представлены начальным и конечным тегами. Имя элемента в начальном и конечном тегах элемента должно совпадать. Элемент может быть также представлен тегом пустого, то есть не включающего в себя другие элементы и символьные данные, элемента.
Тег (англ. tag ) — конструкция разметки, которая содержит имя элемента.
Тег пустого элемента:
В элементе атрибуты могут использоваться только в начальном теге и теге пустого элемента.
Пример кулинарного рецепта, размеченного с помощью XML:
Секция CDATA [ править | править код ]
Секция CDATA не является логической единицей текста. Секция может встречаться в любом месте документа, где синтаксис позволяет размещать символьные данные. Секция начинается и завершается ]]> . Между этой разметкой находятся символьные данные, символьные данные при этом включают символы & в их непосредственной форме.
Корректный документ [ править | править код ]
Корректный (англ. well-formed ) документ соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу: правильная структура документа, совпадение имен в начальном и конечном теге элемента и т. п. Документ, который неправильно построен, не может считаться документом XML.
Пространства имён [ править | править код ]
Пример документа [ править | править код ]
Регламентация работы с документами: правила, языки, программные интерфейсы [ править | править код ]
Этот раздел содержит изложение некоторых положений рекомендаций W3C, касающихся работы с документами. Соответствующие рекомендации могут относиться как к документам XML, так и к более широкому классу документов. Ссылки, как правило, даются на средства работы с документами, рекомендованные W3C.
Кодировка документов [ править | править код ]
Спецификация требует, чтобы обрабатывающие программы поддерживали по крайней мере две кодировки Юникод: UTF-8 и UTF-16.
XML-процессор и приложение [ править | править код ]
Спецификация XML определяет понятия XML-процессор и приложение. XML-процессор (парсер) — программа, анализирующая разметку и передающая информацию о структуре документа другой программе — приложению.
Спецификация XML налагает определённые требования на процессор, не касаясь требований к приложению.
Действительный документ. Проверяющие и непроверяющие процессоры [ править | править код ]
Документ является действительным, если с ним связано объявление типа документа и если этот документ отвечает представленным в объявлении типа ограничениям.
XML-процессоры делятся на два класса: проверяющие и непроверяющие.
Проверяющие процессоры проверяют действительность документа и должны сообщать (по выбору пользователя) о нарушении ограничений, сформулированных в объявлении типа документа.
Непроверяющие процессоры не проверяют действительность документа, но обязанности по предварительной обработке документа, упомянутые выше, остаются за ними.
Описание типов: языки схем [ править | править код ]
Для описания типов документов используются языки схем (англ. schema language ). Поскольку XML является подмножеством языка SGML, то он унаследовал разработанный для SGML язык Document Type Definition (DTD). Позднее были разработаны и другие языки схем, наиболее известны из которых XML Schema, RELAX NG.
Преобразование документа XML [ править | править код ]
Для решения задачи преобразования документа XML в другую схему или другой формат предназначен язык XSLT.
Формат для визуализации документа [ править | править код ]
Для форматированного документа (документа, подготовленного к визуализации) предназначен формат XSL-FO.
Языки запросов [ править | править код ]
XPath — синтаксис для адресации содержимого документа, представленного в форме дерева. Выражения XPath используются в языке XQuery. Выражения XPath, вообще говоря, могут использоваться в любом контексте, где уместно использовать формальные ссылки на элементы дерева, в частности, в качестве параметров для методов интерфейсов доступа к документу.
XQuery — язык программирования, ориентированный на работу с документами.
Чтение XML: три варианта API [ править | править код ]
Для чтения XML есть три варианта API [12] .
Событийный API (event-driven API, push-style API) — XML-процессор читает XML; при определённом событии (появлении открывающего или закрывающего тега, текстовой строки, атрибута) вызывается callback-функция.
- + Быстр, расходует мало памяти [12] .
- + При обработке огромного XML есть стандартная точка, где можно наладить мгновенную остановку обработчика [12] .
- − Крайне сложен для прикладного программиста: приходится держать в памяти информацию, в каком месте документа мы находимся.
- + Библиотека проста в программировании.
- − Затруднена поддержка перекрёстных ссылок: надо организовать временное хранение строковых ссылок, а когда документ будет считан — преобразовать идентификаторы в указатели.
- − При ошибке в XML в памяти остаётся полусозданная структура предметной отрасли; программист должен своими руками корректно уничтожить её.
- − API только для чтения, для записи потребуется другой API.
- ± Естественный выбор, когда из огромного XML надо извлечь немного данных [12] .
- ± Естественный выбор, когда XML надо преобразовать в структуру предметной отрасли [12] .
- Примеры библиотек: SAX, Expat
Потоковый API (также pull-style API) — устроен на манер потоков ввода-вывода.
- + Быстр, расходует мало памяти.
- ± Информация, в каком месте документа мы находимся, неявно задаётся местом в потоке выполнения. Это серьёзно упрощает работу прикладного программиста. На продуманных API объём кода приближается к таковому для DOM.
- − Библиотека сложна в программировании.
- − Сложно сделать, чтобы «почти верные» XML с перепутанным порядком тегов работали правильно.
- − Затруднена поддержка перекрёстных ссылок.
- − При ошибке в XML в памяти остаётся полусозданная структура предметной отрасли; программист должен своими руками корректно уничтожить её.
- − API только для чтения, для записи потребуется другой API.
- Примеры библиотек: StAX
Объектный API (Document Object Model, DOM, «объектная модель документа») — считывает XML и воссоздаёт его в памяти в виде объектной структуры.
- − Наиболее медленный вариант; расходует много памяти — намного больше, чем сам XML занимает на диске.
- + Прост для прикладного программиста.
- + Библиотека проста в программировании.
- + Зачастую удаётся распознать «почти верные» XML с перепутанным порядком тегов.
- + Позволяет произвольный доступ к XML [12] . Это, например, упрощает работу с перекрёстными ссылками.
- + При ошибке в XML в памяти остаётся полусозданная структура XML, которая будет автоматически уничтожена самой библиотекой.
- + Общий API для чтения и записи.
- ± Естественный выбор, когда объектом предметной области является сам XML: например, в веб-браузере[12] , XML-редакторе, в импортёре к программе-локализатору, который извлекает строки из XML произвольной структуры.
- ± Естественный выбор, когда нужно загрузить XML, слегка переработать и сохранить [12] . Те части, которые трогать не нужно, не требуют никакого кода.
- Примеры библиотек: JDOM, TinyXML, pugixml
Бывают и гибридные API: внешние и маловажные части читаются потоковым методом, а внутренние и важные — объектным.