РНР 5 в подлиннике

Страница 425 из 554


Гпава 38. DOM2 — пространства имен

859

Листинг 38.34. Результат вызова сценария exceptions.php

Warning: domdocument::loadXML(): Opening and ending tag mismatch: root line 1 and rootl in Entity, line: 1 in /home/kaf/php5/bo ok/partM/files/dom2/exceptions/exception3.php on line 4 <?xml version="l.0"?>

Часто в таких случаях нужно либо немедленно завершить выполнение программы, либо произвести дополнительные действия по корректировке обрабатываемого документа. Тогда необходимо использовать механизм установки собственного обработчика ошибок (листинг 38.35).

I Листинг 38.35. Файл exceptions/exceptioii4.php

<?php ## Пример замены функции обработки ошибок. $xml = "<rootXchildll/xchild2/X/rootl>"; $ dom = new domDocument ();

$old_error_handler = set_error_handler(1domerrorhandler1); $ret = $dom->loadXML($xml); echo $dom->saveXML(); /**

* Замещающая функция обработки ошибок.

* @param int $errno —.номер ошибки

* Sparam string $errstr — описание ошибки

* @param string $errfile — файл, где обнаружена ошибка

* @param int $errline — номер ошибочной строки */

function domerrorhandler($errno, $errstr, $errfile, $errline) { $mes = "\пОшибка загрузки документа. Файл: $errfile. Строка: $errline. Код:$errno Ошибка:\n $errstr"; throw new Exception($mes);

}

Функция set_error_handier() определяет пользовательскую функцию обработки ошибок domerrorhandler о. В этом случае при возникновении ошибочной ситуации управление передается указанной функции вместе с параметрами, определяющими код ошибки ($errno), текст ошибки ($errstr), файл и строку, где обнаружена ошибка ($errfiie и $erriine). Функция может проанализировать данную информацию и совершить необходимые действия. В этом примере мы формируем текст сообщения и вызываем исключительную ситуацию для завершения выполнения программы.

Резюме

В данной главе мы рассмотрели основные классы (интерфейсы) и методы стандарта DOM2. Для демонстрации каждого свойства в главе приведены небольшие законченные скрипты, пользуясь которыми читатель может написать свои собственные программы.

ГЛАВА 39

D0M3 и другие стандарты

Листинги данной главы можно найти в подкаталоге xmI/dom3.

Спецификации D0M3 получили статус рекомендованного стандарта сравнительно недавно — 7 апреля 2004 года. Если говорить о РНР 5, то в данный момент (релиз 5.1.0-dev) лишь небольшая часть модулей стандарта DOM3 реализована в библиотеке libxml2, которая лежит в основе расширений языка, работающих со стандартом XML. В следующих релизах РНР набор поддерживаемых модулей расширится, но ожидать полной реализации всех модулей DOM3 не стоит, т. к. часть из них касается методов отображения XML-документов и их интерактивной корректировки. Это сфера интернет-браузеров, а не языков, обрабатывающих XML-документы.

В данной главе мы коснемся темы основных модулей и интерфейсов стандарта DOM3 и рассмотрим дополнительные методы, поддерживаемые в DOM-расширении языка РНР 5 и не входящие в DOM-стандарты, но значительно упрощающие поддержку HTML-документов.

Модули стандарта DOM

Уже начиная со второго релиза DOM, выяснилось, что уместить все возникающие стандарты в один документ стало невозможно. Начали возникать различные модули, отображающие определенный аспект обработки XML-документов. Список данных модулей приведен в листинге 39.1.

[Листинг 39.1. Список модулей стандарта DOM

<?xml version="l.О" encoding="KOI8-R"?> <Соге пате="Ядро">

<XML name="XML"/>

<HTML name="HTML"/>

<Xpath name="Xpath"/>

<Traversal пате="Обход XML-дерева"/>

<Range пате="Выборка частей документа"/>

<Validation пате="Проверка"/>

<LS name="Загрузка и выгрузка">




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006