Опубликован: 01.03.2005 | Уровень: для всех | Доступ: платный
Лекция 14:

Взаимодействие PHP и XML

< Лекция 13 || Лекция 14: 12345 || Лекция 15 >

Взаимодействие PHP и XML

Расширения SAX и DOM XML

Для работы с XML -документами можно использовать язык PHP. В PHP для этого существует два модуля, реализующие два разных стандарта обработки XML -данных: SAX (Simple API for XML) и DOM (Document Object Model).

Стандарт SAX (http://www.saxproject.org) не является стандартом W3C и описывает метод обработки XML -документов для получения из них данных. То есть этот метод обработки XML -документов позволит только прочитать данные из XML -документа, и не более того. Создавать и изменять XML -документы с его помощью невозможно.

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

Другим стандартом для обработки XML -данных является DOM – стандарт W3C, спецификацию которого можно найти на сайте консорциума (http://www.w3c.org/DOM). В отличие от SAX, этот метод позволяет производить любые операции с XML -данными в достаточно удобной форме – представляя XML -документ как дерево объектов.

Модуль, реализующий этот стандарт, называется DOM XML. Он не входит в основной набор модулей PHP, но может быть установлен как расширение. API этого модуля старается как можно более точно следовать стандарту DOM level 2. Кроме того, существует множество дополнительных функций. Эти функции включены для совместимости с предыдущими версиями расширения, и использовать их в новых скриптах не рекомендуется. Кроме того, у расширения DOM XML есть проблемы с русской кодировкой. Парсер обрабатывает текст только в кодировке UTF-8, поэтому текст нужно каждый раз перекодировать с помощью функции iconv. Отсюда и необходимость установки расширения iconv вместе с DOM XML.

Модуль DOM XML является мощным и удобным в использовании средством обработки XML -документов. В данной лекции мы будем рассматривать именно его.

Установка расширения DOM XML

Для того чтобы установить расширение DOM XML, нужно сделать следующее.

  • В файле настроек PHP (php.ini) раскомментировать строку, касающуюся этого расширения ( extension=php_domxml.dll для Windows, либо extension=php_domxml.so для Linux-платформ).
  • Скопировать файл расширения ( php_domxml.dll или php_domxml.so ) в папку, где находятся расширения ( extension_dir ).
  • Подключить расширение iconv так же, как в пунктах выше (иногда это расширение устанавливается автоматически вместе с domxml ).
  • Скопировать дополнительные библиотеки в системную папку system (Windows 98) или system32 (WindowsNT/2000/XP). В первую очередь это библиотеки libxml2 и iconv, затем libxslt, libexslt и zlib.
  • Перезапустить сервер.

Следует проверить, правильно ли установлена переменная extension_dir в файле настройки php.ini. Если она не указывает на директорию, где находятся библиотеки расширений PHP, то ни одно из расширений подключить не удастся.

Чтобы проверить, установилось ли расширение, можно создать простейший скрипт, который будет выводить все настройки PHP-интерпретатора (это делает функция phpinfo() ). Другой вариант – попробовать использовать какую-нибудь функцию из данного расширения. Например, можно попробовать получить версию используемой библиотеки libxml с помощью функции domxml_version() . Но этот способ не очень хорош, поскольку расширение экспериментальное (это значит, что некоторые функции в каких-то определенных условиях могут и не работать), да и функции еще надо изучить, прежде чем их использовать.

<?
// выводит информацию о настройках PHP
phpinfo(); 
// отображает используемую версию
// библиотеки libxml
echo domxml_version();
?>
Пример 14.1. Проверка, установлено ли расширение DOM XML
< Лекция 13 || Лекция 14: 12345 || Лекция 15 >
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Данила Некрасов
Данила Некрасов
Россия, Пермь, ПНИПУ
Сергей Федоров
Сергей Федоров
Россия