(PHP 4, PHP 5, PHP 7, PHP 8)
xml_parse — Запускает разбор XML-документа
Функция xml_parse() разбирает XML-документ. Обработчики запрограммированных событий вызываются столько раз, сколько потребуется.
parserСсылка на XML-анализатор.
data
Часть данных для разбора. Для разбора документа по частям
функцию xml_parse() вызывают несколько раз с новыми данными,
пока аргумент is_final не получит
значение true, это сообщит анализатору, что разбирается последняя часть
документа.
is_final
При установке значения true функция расценивает значение параметра data
как последнюю часть разбора.
Функция возвращает значение 1, если выполнилась успешно, иначе значение 0.
При ошибках разбора информацию об ошибках получают функциями xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() и xml_get_current_byte_index().
Замечание:
Отдельные ошибки наподобие ошибок при разборе сущностей выдаются в конце разбора и получить такие ошибки получится только при установке для параметра
is_finalзначенияtrue.
| Версия | Описание |
|---|---|
| 8.0.0 |
Параметр parser ожидает экземпляр класса XMLParser;
раньше параметр ждал корректный xml-ресурс (resource).
|
Пример #1 Пример разбора по частям больших XML-документов
Следующий пример показывает, как считывать и разбирать по частям большие XML-документы, поэтому не требуется держать весь документ в памяти. Обработку ошибок в примере опустили для краткости.
<?php
$stream = fopen('examples/book-simple.xml', 'r');
$parser = xml_parser_create();
xml_set_element_handler(
$parser,
function ($parser, $name, $attributes) {
echo $name, PHP_EOL;
},
function ($parser, $name) {
echo $name, PHP_EOL;
}
);
while (($data = fread($stream, 16384))) {
xml_parse($parser, $data); // Разобрать текущую часть
}
xml_parse($parser, '', true); // Завершить разбор
xml_parser_free($parser);
fclose($stream);