boolean xml_set_external_entity_ref_handler(resource parser, string function)
XML-объекты соответствуют по форме HTML-объектам. Они начинаются символом & и заканчиваются двоеточием. Между двумя этими символами задается имя объекта. Внешний объект определяется в другом файле. В XML-файле это принимает вид <!ENTITY externalEntity SYSTEM "entities.xml">. И всякий раз, когда эта конструкция попадается в теле XML-файла, вызывается программа обработки, заданная функцией xml_set_external_entity_ref_handler. Программа обработки должна принимать пять аргументов. Первым является идентификатор программы-анализатора, вторым - строка, содержащая имена объектов, открытых для этой программы обработки. После этого наступает очередь базы, идентификатора системы и общего идентификатора.
Кроме того, существует возможность определить функцию обработчика в виде метода класса или метода объекта, задав массив, состоящий их двух элементов. Первым элементом может быть имя класса или экземпляра, вторым элементом должно быть имя метода.
boolean xml_set_notation_decl_handler(resource parser, string function)
Программа обработки, зарегистрированная с помощью функции xml_set_ notation_decl_handler, принимает объявления записей, имеющих вид <!NOTATION jpg SYSTEM "/usr/local/bin/jview"> и предназначенных для указания программы обработки данного типа данных.
Программа обработки должна принимать пять аргументов. Первым является идентификатор программы-анализатора, вторым - имя объекта записи. После этого наступает очередь базы, идентификатора системы и общего идентификатора. Кроме того, есть возможность определить функцию обработчика в виде метода класса или метода объекта, задав массив, состоящий их двух элементов. Первым элементом может быть имя класса или экземпляра, вторым элементом должно быть имя метода.
xml_set_object(resource parser, object container)
Функция xml_set_object (листинг 20.13) ассоциирует объект с анализатором. Ей необходимо передать идентификатор анализатора и ссылку на объект. Это лучше всего делать внутри объекта, используя соответствующую переменную. После использования этой функции PHP при упоминании этих программ обработки вызывает методы вместо функций в глобальном диапазоне.
Листинг 20.13. Функция xml_set_object
<?php
class myParser
{
var $parser;
function parse($filename)
{
// создать анализатор
if(!($this->parser = xml_parser_create()))
{
print("Невозможно создать анализатор!<br>"); exit();
}
// ассоциировать анализатор с объектом xml_set_object($this->parser, $this); // зарегистрировать программы обработки xml_set_character_data_handler($this->parser,
"cdataHandler"); xml_set_element_handler($this->parser,
"startHandler", "endHandler");
/*
** Проанализировать файл
*/
if(!($fp = fopen($filename, "r")))
{
print(" Нельзя открыть файл example.xml!<br>");
xml_parser_free($this->parser);
return;
}
while($line = fread($fp, 1024))
{
xml_parse($this->parser, $line, feof($fp));
}
// удалить анализатор xml_parser_free($this->parser);
}
function cdataHandler($parser, $data)
{
print($data);
}
function startHandler($parser, $name, $attributes)
{
switch($name)
{
case 'EXAMPLE':
print("<hr>"); break;
case 'TITLE':
print("<b>"); break;
case 'CODE':
print("<pre>"); break; default:
// проигнорировать другие теги
}
}
function endHandler($parser, $name)
{
switch($name)
{
case 'EXAMPLE':
print("<hr>"); break;
case 'TITLE';
print("</b>");
break;
case 'CODE':
print("</pre>"); break; default:
// игнорировать другие теги
}
}
}
$p = new myParser; $p->parse("corephp.xml");
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. XML-Документ. Часть Десятая.
13-05-2015
<< Предыдущая статья | Следующая статья >> |
PHP. XML-Документ. Часть Девятая. | PHP. XML-Документ. Часть Одиннадцатая. |