xml set external entity ref handler in PHP

In this article I will explain how the xml_set_external_entity_ref_handler() function can be used in PHP.
  • 2172

xml_set_external_entity_ref_handler() function in PHP

  • The xml_set_external_entity_ref_handler() function is specify functions to be called when the parser finds an external entity in the XML document.
  • In xml_set_external_entity_ref_handler() function handler parameter can also be an array containing a method name and an object reference.
  • The xml_set_external_entity_ref_handler() function returns TRUE on success.
  • The xml_set_external_entity_ref_handler() function returns FALSE on failure.

Syntax

xml_set_external_entity_ref_handler(parser,handler)

Parameter

Parameter Description
parser This is the required parameter. It is specify for use to XML parser.
handler This is the required parameter. It is specify for a function to be called when the parser finds an external entity.

The xml_set_external_entity_ref_handler() function specified by the "handler" parameter must have five parameters:

parameter Description
parser This is the required parameter. It is specify a variable containing the XML parser calling the handler.
name This is the required parameter. It is specify a variable containing the name of the external entity
base This is the required parameter. It is specify the base for resolving the system identifier of the external entity. Now, this is always NULL
system_id This is the required parameter. It is specify the system identifier for the external entity.
public_id This is the required parameter. It is specify the public identifier for the external entity.

Example

The following example show to how the xml_set_external_entity_ref_handler() function can be used in PHP.

 

<html>

<body>

<h3 style="color: darkmagenta;">xml_set_external_entity_ref_handler() function example in PHP</h3>

     <?php

    $xml_parser=xml_parser_create();

    function char($xml_parser,$xml_data)

    {

    echo $xml_data;

    }

    function ext_ent_handler($xml_parser,$ent,$base,$sysID,$pubID)

    {

    echo "$ent<br />";

    echo "$sysID<br />";

    echo "$pubID<BR />";

    }

    xml_set_character_data_handler($xml_parser,"char");

    xml_set_external_entity_ref_handler($xml_parser, "ext_ent_handler");

    $fp=fopen("test1.xml","r");

    while ($xml_data=fread($fp,4096))

    {

    xml_parse($xml_parser,$xml_data,feof($fp)) or

    die (sprintf("XML Error: %s at line %d",

    xml_error_string(xml_get_error_code($xml_parser)),

    xml_get_current_line_number($xml_parser)));

    }

    xml_parser_free($xml_parser);

    ?>

</body>

</html>

 

Output

xml-set-external-entity-ref-handler-php.gif
You may also want to read these related articles here

Ask Your Question 

Got a programming related question? You may want to post your question here

© 2020 DotNetHeaven. All rights reserved.