PHP Function Reference

PHP xml_set_unparsed_entity_decl_handler() Function



The PHP xml_set_unparsed_entity_decl_handler() function sets the unparsed entity declaration handler function for the given XML parser.

The handler will be called if the XML parser encounters an external entity declaration with an NDATA declaration, like the following:

<!ENTITY <parameter>name</parameter> {<parameter>publicId</parameter> | <parameter>systemId</parameter>}
        NDATA <parameter>notationName</parameter>

Syntax

xml_set_unparsed_entity_decl_handler(parser, handler)

Parameters

parser Required. Specify a reference to the XML parser to set up unparsed entity declaration handler function.
handler Required. Specify a string containing the name of a function to be used as an event handler. The function must accept six parameters:
handler(parser, entity_name, base, system_id, public_id, notation_name)
  • parser: The first parameter, parser, is a reference to the XML parser calling the handler.
  • entity_name: The name of the entity that is about to be defined.
  • base: The base for resolving the system identifier (system_id) of the notation declaration. Currently this parameter will always be set to an empty string.
  • system_id: The system identifier for the external entity.
  • public_id: The public identifier for the external entity.
  • notation_name: A variable containing the name of the notation of this entity.
If a handler function is set to an empty string, or false, the handler in question is disabled. Note: Instead of a function name, an array containing an object reference and a method name can also be supplied.

Return Value

Returns true on success or false on failure.

Example: xml_set_unparsed_entity_decl_handler() example

Lets assume that we have a file called test.xml. In the example below, an XML parser is created using xml_parser_create() function. Then the XML file is opened to parse its data using character handler function char_print. Then the unparsed_ent_handler function is set as unparsed entity declaration handler function for the given XML parser. After parsing the document, the parser is freed using xml_parser_free() function.

<?php
//create an XML parser
$parser=xml_parser_create();

//character handler function for XML parser
function char_print($parser, $data) {
  echo $data;
}

//unparsed entity declaration handler function for XML parser
function unparsed_ent_handler($parser, $entname, $base, $sysID, $pubID, $notname) {
  echo "$entname $sysID $pubID $notname \n";
}

//set the character handler function for XML parser
xml_set_character_data_handler($parser,"char_print");

//set the unparsed entity declaration handler function for XML parser
xml_set_unparsed_entity_decl_handler($parser,"unparsed_ent_handler");

//opening xml file
$fp = fopen("test.xml", "r");

while($data = fread($fp,4096)) {
  //parsing XML data
  xml_parse($parser,$data,feof($fp)) or

    //displaying error when parse error occurs
    die (sprintf("XML Error: %s at line %d",

    //error string
    xml_error_string(xml_get_error_code($parser)),

    //current line
    xml_get_current_line_number($parser)));
}

//free XML parser
xml_parser_free($parser);

fclose($fp);
?>

❮ PHP XML Parser Reference