array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.xml-parse.php', 1 => 'xml_parse', ), 'up' => array ( 0 => 'ref.xml.php', 1 => 'Функции парсера XML', ), 'prev' => array ( 0 => 'function.xml-parse-into-struct.php', 1 => 'xml_parse_into_struct', ), 'next' => array ( 0 => 'function.xml-parser-create-ns.php', 1 => 'xml_parser_create_ns', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/xml/functions/xml-parse.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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('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);