PHP xml_parser_create() Function
The PHP xml_parser_create() function creates a new XML parser and returns a XMLParser instance to be used by the other XML functions.
Syntax
xml_parser_create(encoding)
Parameters
encoding |
Optional. It specifies the output encoding. Input encoding is automatically detected. If empty string is passed, the parser attempts to identify which encoding the document is encoded in by looking at the heading 3 or 4 bytes. The default output charset is UTF-8. The supported encodings are ISO-8859-1, UTF-8 and US-ASCII. |
Return Value
Returns a new XMLParser instance.
Example:
Lets assume that we have a file called test.xml. This file contains following content:
<?xml version="1.0" encoding="UTF-8"?> <userlist> <user> <username>John123</username> <name>John Smith</name> <phone>+1-8054098000</phone> <address>Brooklyn, New York, USA</address> </user> </userlist>
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. 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; } //set the character handler function for XML parser xml_set_character_data_handler($parser,"char_print"); //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); ?>
The output of the above code will be:
John123 John Smith +1-8054098000 Brooklyn, New York, USA
Example:
Consider one more example where the XML document is parsed using character handler function and element handler functions. After parsing the document, the parser is freed using xml_parser_free() function.
<?php //create an XML parser $parser=xml_parser_create(); //element handler function named "start_handler" //enables customized output function start_handler($parser, $element, $attribs) { switch($element) { case "USERNAME": echo "<b>User Name : "; break; case "NAME": echo "Name : "; break; case "PHONE": echo "Phone : "; break; case "ADDRESS": echo "Address : "; break; } } //element handler function "end_handler" function end_handler($parser, $element) { if($element == "USERNAME") echo "</b><br>"; else echo "<br>"; } // Setting element handlers xml_set_element_handler($parser, "start_handler", "end_handler"); //character handler function for XML parser function char_print($parser, $data) { echo $data; } //set the character handler function for XML parser xml_set_character_data_handler($parser,"char_print"); //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); ?>
The output of the above code will be:
User Name : John123 Name : John Smith Phone : +1-8054098000 Address : Brooklyn, New York, USA
❮ PHP XML Parser Reference