(PHP 4, PHP 5, PHP 7)
xml_parse — Запускает разбор XML-документа
$parser
, string $data
[, bool $is_final
= FALSE
] ) : intxml_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
.
Пример #1 Разбор по частям больших XML-документов
Этот пример показывает, как большие XML-документы могут быть прочитаны и разобраны по частям, поэтому нет необходимости держать весь документ в памяти. Обработка ошибок опущена для краткости.
<?php
$stream = fopen('large.xml', 'r');
$parser = xml_parser_create();
// установить обработчики
while (($data = fread($stream, 16384))) {
xml_parse($parser, $data); // разобрать текущую часть
}
xml_parse($parser, '', true); // завершить разбор
xml_parser_free($parser);
fclose($stream);