IBM®

Викрам Васвани,
основатель компании, Melonfire

Преобразование SQL в XML с помощью PHP

Источник: сайт представительства корпорации IBM в России, developerWorks
раздел «developerWorks Россия», 07.09.2007
http://www.ibm.com/developerworks/ru/library/x-query2xml/

Уровень сложности: средний

Простое преобразование результатов запроса к базе данных в документ XML

Вы когда-нибудь хотели узнать простой способ преобразования результатов SQL-запроса в XML? Такой способ есть, он реализован в пакете PEAR под названием XML_Query2XML, и предоставляет комплексную основу для эффективного конвертирования результатов запроса к базе данных в настраиваемый документ XML. В этой статье дается описание пакета и показывается его применение в реальных приложениях, в том числе – его использование с XSL и XPath, сочетание с данными внешних Web-сервисов и создание файлов дампа базы данных.

Введение
Возможно, вы слышали о PEAR - архиве приложений и расширений PHP (PHP Extension and Application Repository). Этот проект, поддерживаемый сообществом пользователей, нацелен на создание большой библиотеки высококачественного открытого кода, который поможет программистам на PHP ускорить разработку приложений. Уже давно PEAR, схожий по идее с архивом CPAN для Perl, является первым местом, где я ищу интересные и полезные виджеты PHP+XML. Некоторые из них используют класс XML_Serializer, очень удобный для преобразования структур данных PHP в последовательную форму объектов XML; класс XML_XUL, предоставляющий интерфейс API для разработки приложений Mozilla XUL; и класс XML_SVG, реализующий методы программного построения векторной графики в формате SVG.
В этой статье я расскажу вам еще об одном элементе раздела XML архива PEAR – классе XML_Query2XML. Этот класс реализует программный интерфейс для быстрого и эффективного преобразования результирующего множества данных SQL в правильно оформленный XML-код. Используя немного фантазии, можно преобразовать эти данные в другие форматы с помощью XSLT или интегрировать их с другими приложениями, использующими XML.

Установка необходимого программного обеспечения
Пакет XML_Query2XML активно разрабатывается и поддерживается Лукасом Фейлером (Lukas Feiler) и выпускается для сообщества PHP под лицензией LGPL. Для него требуется PHP 5.0 (или более поздней версии). Проще всего установить этот пакет с помощью автоматической установочной программы PEAR, которая должна по умолчанию присутствовать в вашей сборке PHP. Чтобы установить этот пакет, просто выполните следующую команду в командной строке shell:
shell>pear install XML_Query2XML
Программа установки PEAR соединяется с сервером пакетов PEAR, загружает пакет и устанавливает его в соответствующую папку в вашей системе.
Чтобы установить пакет вручную, зайдите на Web-сайт PEAR, загрузите архив с пакетом и разархивируйте файлы в нужную директорию. Учтите, что для процесса ручной установки необходимо знание организационной структуры пакета PEAR.
На этом этапе надо также помнить о некоторых зависимостях пакета:

  1. Для связи с необходимой СУБД пакет XML_Query2XML использует один из уровней абстракции базы данных DB, MDB2 или ADOdb, поэтому в системе должен быть установлен один из этих уровней абстракции и драйвер соответствующей базы данных. В примерах, приведенных в этой статье, используется уровень абстракции MDB2, который вместе с драйвером MySQL MDB2_Driver_mysql также можно найти в архиве пакетов PEAR. Как было описано ранее, для установки обоих пакетов вы можете воспользоваться программой автоматической установки PEAR или загрузить из с Web-сайта PEAR.
  2. В примерах, приведенных в этой статье, используется демонстрационная база данных MySQL world, уже заполненная и содержащая связанные таблицы данных о городах и странах. Инструкции по получению и установке базы данных world можно найти в разделе Ресурсы этой статьи.
  3. Для примеров, приведенных в этой статье, требуется, чтобы сборка PHP поддерживала функции PHP DOM, XSL и SimpleXML. Эти функции включены по умолчанию в PHP 5.x.
  4. Предполагается, что вы знаете функции PHP DOM и SimpleXML, а также технологии XML, XPath и XSL.

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

Преобразование SQL в XML
Если установлены все необходимые компоненты, вы можете начать изучение XML_Query2XML со следующего простого сценария PHP:

Листинг 1. Простое преобразование SQL в XML

<?php
// включаем необходимые файлы
include 'XML/Query2XML.php';
include 'MDB2.php';
 
try {
    // инициализируем объект Query2XML
    $q2x = XML_Query2XML::factory(MDB2::factory('mysql://root:pass@localhost/world'));
    
    // формируем запрос SQL
    // получаем результат в XML
    $sql = "SELECT * FROM Country";
    $xml = $q2x->getFlatXML($sql);
    
    // отправляем результат в браузер 
    header('Content-Type: text/xml');
    $xml->formatOutput = true;
    echo $xml->saveXML();
} catch (Exception $e) {
    echo $e->getMessage();
}
?>

 

Этот сценарий демонстрирует пример использования класса XML_Query2XML. Сначала сценарий включает файлы классов XML_Query2XML и MDB2, а затем инициализирует экземпляр уровня абстракции MDB2 с помощью метода factory(). На вход этого метода передается строка DSN, содержащая информацию о типе СУБД, имени пользователя и пароле, а также названии базы данных. Получившийся экземпляр MDB2 используется для инициализации экземпляра XML_Query2XML, представленного объектом $q2x.
 

----------------********-----------------

От редакции OM/RE:
Полностью эта статья находится на сайте представительства корпорации IBM в России по адресу http://www.ibm.com/developerworks/ru/library/x-query2xml/

----------------********-----------------

Оригинал статьи Turn SQL into XML with PHP.(EN)

Об авторе: Викрам Васвани (Vikram Vaswani) – основатель и президент консалтинговой фирмы Melonfire, специализирующейся на технологиях и инструментах с открытым исходным кодом. Также является автором книг Решения по программированию на PHP and Как сделать все что угодно с помощью PHP и MySQL

E-mail this page