SAX parser parses the XML file ensuring better memory management than other parsing methods. This parser does not allow to keep in the memory thus you can parse the large file using SAX parser. Below example will allow you to know about how to get data from the XML file using SAX parser. First, we will create an XML file containing the data to be accessed using PHP code.
Data.xml file
<?xml version = "1.0" encoding = "utf-8"?> <detail> <subject> <name>data structure</name> <class>XXX</class> <teacher>YYY</teacher> </subject> <subject> <name>OS</name> <class>XXX</class> <teacher>YYY</teacher> </subject> </detail>
Below is the php file through which the data of data.xml file is going to be accessed.
Access.php file
<?php $detail = array(); $elements = null; // when tags are opened call the function function startElements($parser, $name, $attrs) { global $detail, $elements; if(!empty($name)) { if ($name == SUBJECT) { // creating array to store data $detail []= array(); } $elements = $name; } } // when tags are closed call this function function endElements($parser, $name) { global $elements; if(!empty($name)) { $elements = null; } } // for text between the start and end of the tags function characterData($parser, $data) { global $detail, $elements; if(!empty($data)) { if ($elements == 'NAME' || $elements == 'EMAIL' || $elements == TEACHER) { $tutors[count($detail)-1][$elements] = trim($data); } } } $parser = xml_parser_create(); xml_set_element_handler($parser, "startElements", "endElements"); xml_set_character_data_handler($parser, "characterData"); if (!($handle = fopen(Data.xml', "r"))) { die("could not open XML input"); } while($data = fread($handle, 4096)) { xml_parse($parser, $data); // start parsing } xml_parser_free($parser); // deleting parser $i = 1; foreach($detail as $subject) { echo "subject No - ".$i.'<br/>'; echo "subject Name - ".$subject['NAME'].'<br/>'; echo "Email - ".$subject['EMAIL'].'<br/>'; echo "Teacher - ".$subject[TEACHER].'<hr/>'; $i++; } ?>
Output-
subject no - 1 subject Name - data structure Email - XXX Teacher - YYY subject no - 2 subject Name - OS Email - XXX Teacher - YYY
People are also reading: