xml_parse

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

xml_parseInicia el análisis de un documento XML

Descripción

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

xml_parse() analiza un documento XML. Los gestores para los eventos configurados son llamados tantas veces como sea necesario.

Parámetros

parser

Una referencia al analizador XML a utilizar.

data

Una parte de los datos a analizar. Un documento puede ser analizado por partes mediante llamadas sucesivas a xml_parse() con nuevos datos, siempre que el parámetro is_final esté definido como true cuando se analicen los últimos datos.

is_final

Si está definido y vale true, data será el último fragmento de datos enviado al analizador.

Valores devueltos

Devuelve 1 en caso de éxito o 0 en caso de fallo.

En caso de fallo en el análisis, la causa del error puede obtenerse mediante las funciones xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() y xml_get_current_byte_index().

Nota:

Algunos errores (incluyendo errores de entidades) son reportados al final de los datos, esto únicamente si is_final vale true.

Historial de cambios

Versión Descripción
8.0.0 parser expects an XMLParser instance now; previously, a valid xml resource was expected.

Ejemplos

Ejemplo #1 Análisis de documentos XML grandes por partes

Este ejemplo muestra cómo los documentos XML grandes pueden ser leídos y analizados por partes, permitiendo así no mantener en memoria la totalidad del documento. No se ha establecido ningún gestor de errores para hacer el ejemplo más conciso.

<?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); // análisis de la parte actual
}
xml_parse($parser, '', true); // finalización del análisis
xml_parser_free($parser);
fclose($stream);