Для работы с XML в РНР используется пакет Джеймса Кларка(James Clark) Expat(XML Parser Toolkit) — cm. http://www.jclark.com/xml. Expat включается в поставку Apache 1.3.7 и более поздних версий, поэтому вам не придется специально загружать его, если вы используете свежую версию Apache. Чтобы воспользоваться функциональными возможностями XML в РНР, необходимо настроить РНР с ключом -with-xml.
Разработку Expat 2.0 в настоящее время ведет Кларк Купер(Clark Cooper). За дополни- тельной информацией обращайтесь по адресу http://expat.sourceforge.net/.
На первый взгляд задача обработки данных XML на РHР(или на любом другом языке) выглядит устрашающе, но на самом деле большая часть работы выполняется за вас стандартными средствами РНР. Вам остается лишь определить новые функции для своих DTD и затем применить их в несложном процессе обработки кода XML.
Прежде чем переходить к рассмотрению функций РНР, предназначенных для работы с XML, необходимо познакомиться с основными компонентами документа XML. Это поможет вам лучше понять, почему эти функции являются незаменимой частью любой программы обработки XML-кода. На самом общем уровне документ XML содержит компоненты девяти видов:
открывающие теги;
атрибуты;
символьные данные;
закрывающие теги;
инструкции по обработке;
синтаксические объявления;
внешние ссылки на сущности;
необработанные сущности;
прочие компоненты(комментарии, объявления XML и т. д.).
Для эффективной обработки документов XML необходимо определить пользовательские функции-обработчики(handlers), обрабатывающие каждый из перечисленных компонентов. Определенные функции подключаются к процессу обработки XML стандартными средствами РНР. Общий процесс обработки кода XML в РНР состоит из пяти этапов:
Определите пользовательские функции. Разумеется, если вы собираетесь постоянно работать с документами XML, эти функции достаточно написать всего один раз и в дальнейшем лишь вносить в них необходимые изменения.
Создайте анализатор(parser) кода XML, который будет использоваться для обработки документа. Анализатор создается вызовом функции xml_parser_create().
При помощи стандартных функций зарегистрируйте свои функции в анализаторе XML.
Откройте файл XML, прочитайте содержащиеся в нем данные и передайте их анализатору XML. Обработка данных выполняется простым вызовом xml_parse()! В процессе своей работы эта функция обеспечивает косвенный вызов всех определенных вами обработчиков.
Уничтожьте анализатор XML, чтобы освободить задействованные им ресурсы.
Задача решается функцией xml_parser_free(). Смысл всех перечисленных этапов разъясняется в следующем разделе.