Блог → Для чего нужны XML-парсеры и чем они могут быть полезны

Если вы имеется отношение к созданию сайтов, вы наверняка слышали об XML, даже если ещё не использовали его в работе. В таком случае, настало время познакомиться, ведь пережив настоящий бум, за последний десяток лет этот новый формат вырос из новаторского проекта в настоящий промышленный стандарт, и чуть ли не ежедневно появляются сообщения о примерах его успешного использования.

Одной из важнейших составляющих XML-технологии является специальный класс программ, отвечающих за анализ документов и извлечение необходимой информации - парсеры. Именно о них и пойдет речь в этой статье. Разберемся, для чего нужны парсеры, какие они бывают и где их можно достать.

Вообще XML-документ - это простой текстовый файл, в котором при помощи специальных синтаксических конструкций (их называют "тегами") сохраняется необходимая структура данных. Это позволяет хранить информацию не сплошным массивом, а в виде иерархически связанных фрагментов. Так как текстовые файлы очень легко создавать и передавать по сети, они являются крайне удобным способом хранения информации и широко используются при создании сложных распределенных приложений.



Но универсальность текстового формата XML оборачивается вполне очевидным неудобством - перед извлечением данных из документа надо как следует помучиться с синтаксическим анализом текста и определением его структуры. Реализация всех необходимых процедур вручную - весьма нетривиальное занятие, и потребует немалых усилий. Одним из стандартных механизмов, позволяющих упростить жизнь разработчиков, и являются парсеры.

Что же это такое? XML-парсер - это программа, предназначенная для анализа содержимого текстового документа, который соответствует спецификации XML. Ей достается вся "чёрная" работа: получение общих сведений о документе, анализ текста, поиск в нем служебных конструкций (элементов, атрибутов, сущностей и т.п.), проверка на соблюдение синтаксических правил, а также предоставление интерфейса для доступа к документу. В результате аккуратно извлеченные данные, будут переданы пользовательскому приложению, которое может вообще ничего не знать о том, что такое XML.

Парсер может быть выполнен в виде отдельного программного модуля или ActiveX-компонента, может подключаться к приложению через специальные библиотеки классов на этапе компиляции или выполнения. Парсеры делятся на верифицирующие (validating) и неверифицирующие (non-validating). Первые могут проверять структуру документа на основе DTD или схем данных, вторые же об этом не заботятся - и потому имеют, как правило, меньший размер. Многие из современных парсеров "нагружены" многочисленными дополнительными возможностями (расширенная обработка ошибок, добавление и редактирование данных), что делает их более удобными в работе, хотя и повышает размер программ. Практически все распространенные парсеры поддерживают также ряд важных XML-стандартов (XSLT, схемы данных, Name spaces, XPath и т.д.) - или же поставляются в связке с парсерами других производных от него языков.

Если вы осознали полезность парсера для XML, то пора начинать практические опыты. Где же их взять? Особых проблем с поиском соответствующего софта возникнуть не должно: в Интернете полно свободно распространяемых парсеров, написанных на всевозможных языках программирования, работающих на всех платформах и имеющих самые разные характеристики и предназначение.

Наиболее распространенным и известным является парсер Expat, написанный Джеймсом Кларком - одним из создателей спецификации XML. Он реализован на языке программирования C++ и распространяется вместе с исходным кодом. Кстати, поддержка этого языка разметки в таких известных средах, как РНР и Perl, реализована именно на его основе. Другой распространенный парсер - Xerces, есть в Apache XML Project (реализован на языках Java и C++). Можно найти много парсеров для C++, Perl и Python. Основная их масса написана на Java, и годится для любой платформы, знакомой с Java. Не остались в стороне и лидеры рынка (Microsoft, Oracle, Sun), всегда отличающиеся масштабностью и монументальностью. Они выпустили более "тяжеловесные" и функциональные пакеты, которые содержат, помимо собственно парсеров, множество дополнительных утилит, облегчающих жизнь разработчиков.

Разумеется, невозможно рассказать всё об парсерах в рамках одной заметки. Но хотелось бы надеяться, что вы поняли - работа с XML не так трудна, как может показаться. Все сложности этого формата скрыты от нас внутри парсеров, и нет никаких причин бояться внедрять новый формат в существующие проекты.