xml_set_unparsed_entity_decl_handler()
Функция xml_set_unparsed_entity_decl_handler() — это встроенная функция PHP, которая устанавливает пользовательскую функцию обратного вызова в качестве обработчика объявлений непарсируемых сущностей в парсере XML. Она относится к расширению XML Parser и работает исключительно с парсером в стиле SAX, а не с SimpleXML. Этот обработчик полезен, когда необходимо обрабатывать непарсируемые сущности (например, бинарные данные, такие как изображения или PDF-файлы, на которые ссылается XML) без загрузки их в память.
Синтаксис
Синтаксис функции xml_set_unparsed_entity_decl_handler() выглядит следующим образом:
синтаксис функции xml_set_unparsed_entity_decl_handler() в PHP
xml_set_unparsed_entity_decl_handler($parser, $handler)Где $parser — это ресурс парсера XML, для которого устанавливается обработчик, а $handler — имя пользовательской функции обратного вызова, которая будет обрабатывать объявления непарсируемых сущностей.
Примеры использования
Рассмотрим практический пример использования xml_set_unparsed_entity_decl_handler() в PHP.
Пример: Установка функции-обработчика объявлений непарсируемых сущностей
Предположим, у вас есть XML-документ, содержащий объявление непарсируемой сущности. Вы можете использовать функцию xml_parser_create() для создания нового SAX-парсера, установить обработчик с помощью xml_set_unparsed_entity_decl_handler(), а затем разобрать XML-данные:
Установка функции-обработчика объявлений непарсируемых сущностей в PHP
function handle_unparsed_entity($parser, $name, $base, $systemId, $publicId, $notationName) {
echo "Unparsed entity '$name' found: $systemId (notation: $notationName)\n";
}
$xml_parser = xml_parser_create();
xml_set_unparsed_entity_decl_handler($xml_parser, "handle_unparsed_entity");
$xml_data = '<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY logo SYSTEM "logo.png" NDATA png>
]>
<root/>';
xml_parse($xml_parser, $xml_data, true);
xml_parser_free($xml_parser);Этот код создает новый SAX-парсер с помощью xml_parser_create(). Затем он регистрирует обратную функцию handle_unparsed_entity() для обработки объявлений непарсируемых сущностей. Когда xml_parse() обрабатывает строку XML, обратная функция выполняется и выводит детали сущности. Вы можете изменить обратную функцию, чтобы извлечь конкретную информацию или выполнить любые другие необходимые действия.
Заключение
В этой статье мы обсудили функцию PHP xml_set_unparsed_entity_decl_handler() и то, как она интегрируется с XML-парсером в стиле SAX. Мы объяснили, что такое непарсируемые сущности, рассмотрели синтаксис функции и привели полный рабочий пример. Используя этот обработчик в своих приложениях на PHP, вы сможете эффективно обрабатывать ссылки на бинарные данные в XML без их загрузки в память.
Практика
В чем назначение функции xml_set_unparsed_entity_decl_handler в PHP?