PHP xml_set_external_entity_ref_handler() Funktion

Definition und Verwendung

Die Funktion xml_set_external_entity_ref_handler() definiert die Funktion, die aufgerufen wird, wenn der Parser ein externes Element im XML-Dokument findet.

Wenn der Verarbeiter erfolgreich eingerichtet wird, gibt die Funktion true zurück; andernfalls wird false zurückgegeben.

Syntax

xml_set_external_entity_ref_handler(parser,Handler)
Parameter Beschreibung
parser Erforderlich. Definiert den XML-Parser, der verwendet werden soll.
Handler Erforderlich. Definiert die Funktion, die aufgerufen wird, wenn der Parser ein externes Element findet.

von Handler Die von den Parametern festgelegte Funktion muss sechs Parameter haben:

Parameter Beschreibung
parser Erforderlich. Definiert eine Variable, die den XML-Parser enthält, der von dem Verarbeiter aufgerufen wird.
name Erforderlich. Definiert eine Variable, die den Namen eines externen Elements enthält.
base

Erforderlich. Definiert eine Variable, die den Grundstock für den Systemidentifier (system_id) eines externen Elements enthält.

Der aktuelle Parameter wird in der Regel auf eine leere Zeichenkette gesetzt.

system_id Erforderlich. Definiert die Variable, die den systemischen Identifikator der externen Entity enthält.
public_id Erforderlich. Definiert die Variable, die den öffentlichen Identifikator der externen Entity enthält.

Beschreibung

Handler Der Parameter kann auch ein Array sein, das Objektverweise und Methodennamen enthält.

Beispiel

<?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("XML Fehler: %s in Zeile %d", 
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
  }
xml_parser_free($parser);
?>