Запускает разбор XML-документа

# xml_parse

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_parse — Запускает разбор XML-документа

### Описание

function xml_parse(XMLParser `$parser`, string `$data`, bool `$is_final` = `false`): int

Функция 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); // Завершить разбор
    fclose($stream);

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open