PHP Tutorial - PHP xml_set_element_handler() Function






The xml_set_element_handler() function specifies functions to be called at the start and end of an element in the XML document.

Syntax

PHP xml_set_element_handler() Function has the following syntax.

xml_set_element_handler(parser,start,end)

Parameter

ParameterIs RequiredDescription
parserRequired.XML parser to use
startRequired.A function to be called at the start of an element
endRequired.A function to be called at the end of an element

The Function specified by the "start" parameter must have three parameters:

ParameterIs RequiredDescription
parserRequired.A variable containing the XML parser calling the handler
nameRequired.A variable containing the name of the elements, that triggers this function, from the XML file as a string
dataRequired.An array containing the elements attributes from the XML file as a string

The Function specified by the "end" parameter must have two parameters:

ParameterIs RequiredDescription
parserRequired.A variable containing the XML parser calling the handler
nameRequired.A variable containing the name of the elements, that triggers this function, from the XML file as a string




Return

This function returns TRUE on success, or FALSE on failure.

Example

XML File

<?xml version="1.0" encoding="ISO-8859-1"?>
<Book>
    <name>PHP</name>
    <name>Java</name>
</Book>

Set functions to be called at the start and end of an element in the XML document


<?php//  w ww  .ja va2 s .c o m
$parser=xml_parser_create();

function start($parser,$element_name,$element_attrs){
  switch($element_name){
    case "name":
       echo "name";
    }
  }

function stop($parser,$element_name){
  echo "\n";
}
function char($parser,$data){
  echo $data;
}

xml_set_element_handler($parser,"start","stop");
xml_set_character_data_handler($parser,"char");
$fp=fopen("test.xml","r");

while ($data=fread($fp,1024)){
  xml_parse($parser,$data,feof($fp)) or 
  die (sprintf("XML Error: %s at line %d", 
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
}

xml_parser_free($parser);
?>