Чтение онлайн

на главную - закладки

Жанры

Курс "Язык программирования PHP"

Савельева Нина Владимировна

Шрифт:

Объектная модель XML-документа

Структура XML-документа очень напоминает объектную модель: она иерархична, одни элементы могут быть потомками других. Любой XML-документ можно представить в качестве объектной модели. При этом одни элементы (например, теги) становятся объектами, другие (атрибуты и текстовые элементы) – их свойствами. Например, для документа

<parent>

<child id="text">Добрый день!</child>

</parent>

объектная

модель может выглядеть как показано на рис. 14.1

Прямоугольниками изображены объекты, овалом – свойства объектов.

Рис. 14.1. Пример объектной модели

Для каждого конкретного XML-документа можно создать свою объектную модель, но есть более общая объектная модель, применимая для любого XML-документа, вне зависимости от его структуры. Эта модель называется DOM (Document Object Model).

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

Хотя DOM расшифровывается как «объектная модель документа», работает DOM преимущественно с интерфейсами, а не с объектами. Интерфейс – это соглашение, по которому поддерживаются определенные свойства и методы, применяемые к некоему объекту. На рис. 14.2 показано, как приведенный выше XML-документ представляется в DOM:

Рис. 14.2. Пример DOM (Document Object Model)

Каждый прямоугольник представляет собой объект, имена в прямоугольниках соответствуют интерфейсам, которые будут реализованы каждым объектом. Каждый объект может реализовывать несколько подходящих интерфейсов. Например, объект представляющий символьные данные «Hello,World!», реализует интерфейсы Text, CharacterData, Node.

Преимущество модели DOM состоит в том, что она универсальна, т.е. может применяться для документов любого типа. Ее использование может существенно упростить обработку XML-документов.

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

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

и отображаются на обоих сайтах.

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

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

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

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

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

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

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

Поделиться:
Популярные книги

Драконий Оборотень

Витушко Евгения
1. Драконий оборотень
Фантастика:
фэнтези
сказочная фантастика
9.17
рейтинг книги
Драконий Оборотень

Русь и Орда. Великая империя средних веков

Фоменко Анатолий Тимофеевич
1. Новая хронология для всех
Научно-образовательная:
история
7.00
рейтинг книги
Русь и Орда. Великая империя средних веков

Микробы хорошие и плохие. Наше здоровье и выживание в мире бактерий.

Сакс Джессика Снайдер
Элементы
Научно-образовательная:
биология
химия
6.40
рейтинг книги
Микробы хорошие и плохие. Наше здоровье и выживание в мире бактерий.

Память Света (Память огня)

Сандерсон Брендон
14. Колесо Времени
Фантастика:
фэнтези
9.23
рейтинг книги
Память Света (Память огня)

КОТ и К°. Книга четвёртая. Луч света на закате старого мира

Артемьев Юрий
4. КОТ и К°
Фантастика:
попаданцы
альтернативная история
постапокалипсис
5.00
рейтинг книги
КОТ и К°. Книга четвёртая. Луч света на закате старого мира

Ключ от Снов

Челяев Сергей
3. Ключи Коростеля
Фантастика:
фэнтези
5.00
рейтинг книги
Ключ от Снов

Газлайтер. Том 28

Володин Григорий Григорьевич
28. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.60
рейтинг книги
Газлайтер. Том 28

Молот Пограничья. Гексалогия

Пылаев Валерий
Молот Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.25
рейтинг книги
Молот Пограничья. Гексалогия

Сага о копье: Омнибус. Том II

Коллектив авторов
Сага о Копье
Фантастика:
фэнтези
5.00
рейтинг книги
Сага о копье: Омнибус. Том II

"Кроваво-Красная" Армия. По чьей вине?

Бешанов Владимир Васильевич
Научно-образовательная:
история
6.67
рейтинг книги
Кроваво-Красная Армия. По чьей вине?

Философия и культура

Ильенков Эвальд Васильевич
Научно-образовательная:
философия
5.00
рейтинг книги
Философия и культура

Зазеркальная империя. Гексалогия

Ерпылев Андрей Юрьевич
Зазеркальная империя
Фантастика:
боевая фантастика
попаданцы
6.89
рейтинг книги
Зазеркальная империя. Гексалогия

Алиби

Браун Сандра
Любовные романы:
остросюжетные любовные романы
9.17
рейтинг книги
Алиби

Истоки

Некрасов Анатолий Александрович
Религия и эзотерика:
эзотерика
6.25
рейтинг книги
Истоки