Función PHP xml_set_external_entity_ref_handler()

Definición y uso

La función xml_set_external_entity_ref_handler() define la función que se llama cuando el analizador encuentra una entidad externa en el documento XML.

Si el procesador se crea con éxito, la función regresará true; de lo contrario, regresará false.

Sintaxis

xml_set_external_entity_ref_handler(parser,handler)
Parámetros Descripción
parser Requerido. Define el analizador XML a usar.
handler Requerido. Define la función que se llama cuando el analizador encuentra una entidad externa.

Por handler La función especificada por el parámetro debe tener seis parámetros:

Parámetros Descripción
parser Requerido. Define una variable que contiene el analizador XML utilizado para llamar al procesador.
name Requerido. Define una variable que contiene el nombre de la entidad externa.
base

Requerido. Define una variable que contiene la base para el identificador de sistema (system_id) de la entidad externa.

La parámetro actual generalmente se establece en una cadena vacía.

system_id Obligatorio. Variable que especifica el identificador del sistema del ente externo.
public_id Obligatorio. Variable que especifica el identificador público del ente externo.

Descripción

handler El parámetro también puede ser un array que contenga referencias a objetos y nombres de métodos.

Ejemplo

<?php
$parser=xml_parser_create();
function char($parser,$data)
  {
  echo $data;
  }
function ext_ent_handler($parser,$ent,$base,$sysID,$pubID)
  {
  echo "$ent";
  echo "$sysID";
  echo "$pubID";
  }
xml_set_character_data_handler($parser,"char");
xml_set_external_entity_ref_handler($parser, "ext_ent_handler");
$fp=fopen("test.xml","r");
while ($data=fread($fp,4096))
  {
  xml_parse($parser,$data,feof($fp)) or 
  die (sprintf("Error de XML: %s en la línea %d", 
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
  }
xml_parser_free($parser);
?>