Привет, Гость!
home login register
[+] Купить Рекламу
Хостинг для тебя! Заходи не пожалеешь
Что мы делаем полезного на официальном сайте WAP-поддержки? Подробно ...
Вступайте в нашу группу ВКОНТАКТЕ
Поздравляем, новичка с ID:1000
Как самомусделать QR-код
IT новости: в Windows новая опасная уязвимость
Проблемы восприятия IT
Как подтвердить авторство в Google

Учебник PHP #14
<< 1 ... 4 5 6 7 8 9 >>
типа вызывает немало затруднений).

Но стоит познакомиться с базовой стратегией работы с XML в РНР, и все оказывается на удивление просто.

РНР и ХМL

Для работы с 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( ). Смысл всех перечисленных этапов разъясняется в следующем разделе.

Подключение пользовательских функций к обработке XML

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

Следует помнить, что вы обязательно должны определить все пользовательские функции; в противном случае произойдет ошибка. В этом разделе перечислены все стандартные функции регистрации и приведены спецификации всех пользовательских функций.

xml_set_character_data_handler()

Функция регистрирует пользовательскую функцию для работы с символьными данными. Синтаксис:

int xml_set_character data_handler(int анализатор, string обработчик_символьных_данных)

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

function обработчик_символьных_данных (int анализатор, string данные) {

...

}

Первый параметр определяет анализатор XML, а второй — символьные данные, подлежащие обработке.

xml_set_default_handler( )

Функция регистрирует пользовательскую функцию для всех незарегистрированных компонентов документа XML. В частности, к числу таких компонентов относятся пролог XML и комментарии. Синтаксис:

int xml_set_default_handler(int анализатор, string обработчик_по_умолчанию)

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

function обработчик_по_умолчанию (int анализатор, string данные) {

...

}

Первый параметр определяет анализатор XML, а второй — символьные данные, подлежащие обработке.

xml_set_element_handler( )

Функция регистрирует пользовательские функции для обработки открывающих и закрывающих тегов элементов. Синтаксис:

int xml_set_element_handler(int анализатор, string обработчик_открывающих_тегов, string обработчик_закрывающих_тегов)

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

function обработчик_открывающих_тегов (int анализатор, string имя_тега,

string атрибуты[ ]) {

...

}

Первый параметр определяет анализатор XML, второй — имя открывающего тега для анализируемого элемента, а третий содержит массив атрибутов соответствующего тега.

Обработчик закрывающих тегов определяется следующим образом:

function обработчик_закрывающих_тегов (int анализатор, string имя_тега) {

...

}

Первый параметр определяет анализатор XML, второй — имя закрывающего тега для анализируемого элемента.

xml_set_external_entity_ref_handler( )

Функция регистрирует пользовательскую функцию для обработки внешних ссылок на сущности. Синтаксис:

int xml_set_external_entity_ref_handler(int анализатор, string обработчик_внешних_ссылок)

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

function обработчик_внешних_ссылок (int анализатор, string ссылка, string база. string системный_идентификатор, string открытый_идентификатор) {

...

}

Первый параметр определяет анализатор XML. Второй параметр определяет имя ссылки, четвертый — системный идентификатор ссылки на сущность, а пятый — открытый идентификатор ссылки. Третий параметр, база, в настоящее время не используется, однако его объявление все равно обязательно.

xml_set_notation_decl_handler ( )

Функция регистрирует пользовательскую функцию для обработки синтаксических объявлений. Синтаксис:

int xml_set_notation_decl_handler(int анализатор, string обработчик_синтаксических_обьявлений)

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

function обработчик_синтаксических_обьявлений (int анализатор, string ссылка, string база, string системный_идентификатор,
Комментарии (0)
<< 1 ... 4 5 6 7 8 9 >>
Скачать Java книгу

»php/mysql/pdo/js
В библиотеку

На главную

Сообщество wap разработчиков I HwapCMS официальный сайт поддержки


RSS-лента
Генерация: 0.0096 сек.