xml_parse

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

xml_parseInicia análise de um documento XML

Descrição

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

xml_parse() analisa um documento XML. Os manipuladores para os eventos configurados são chamados quantas vezes forem necessárias.

Parâmetros

parser

Uma referência ao analisador XML a ser usado.

data

Bloco de dados a serem analisados. Um documento pode ser analisado em partes chamando xml_parse() várias vezes com novos dados, desde que o parâmetro is_final esteja definido e true quando os últimos dados forem analisados.

is_final

Se definido e true, data é o último pedaço de dados enviado nesta análise.

Valor Retornado

Retorna 1 em caso de sucesso ou 0 em caso de falha.

Para análises malsucedidas, as informações de erro podem ser recuperadas com xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() e xml_get_current_byte_index().

Nota:

Alguns erros (como erros de entidade) são relatados no final dos dados, portanto, somente se is_final estiver definido e true.

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro parser agora espera uma instância de XMLParser; anteriormente, um resource xml válido era esperado.

Exemplos

Exemplo #1 Análise em blocos de documentos XML grandes

Este exemplo mostra como documentos XML grandes podem ser lidos e analisados ​​em pedaços, para que não seja necessário manter o documento inteiro na memória. O tratamento de erros é omitido por questões de brevidade.

<?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); // analisa o pedaço atual
}
xml_parse($parser, '', true); // finaliza a análise
xml_parser_free($parser);
fclose($stream);