PHP | xml_parser_create() Function
Last Updated :
11 Mar, 2022
Improve
The xml_parser_create() function is an inbuilt function in PHP which is used to create an XML parser.
Syntax:
resource xml_parser_create( string $encoding )
Parameters: This function accepts single parameter $encoding which is optional. It specifies the character encoding:
- for input/output in PHP 4
- only for output from PHP 5
- for 5.0.0 and 5.0.1 default output charset is ISO-8859-1
- from 5.0.2 default output charset is UTF-8
Return Value: This function returns the resource handler which is to be used by some other XML functions on success or False on failure.
Note:
- This function is available for PHP 4.0.0 and newer version.
- These examples may not work on online IDE. So, try to run it on local server or php hosted servers.
gfg.xml file:
<?xml version="1.0" encoding="utf-8"?>
<user>
<username> user123 </username>
<name> firstname lastname </name>
<phone> +91-9876543210 </phone>
<detail> I am John Doe. Live in Kolkata, India. </detail>
</user>
Program 1:
<?php
// Create an XML parser
$parser = xml_parser_create();
// set the character handler function
// for the XML parser
xml_set_character_data_handler($parser, "char_print");
// Opening the xml file
$filePointer = fopen("gfg.xml", "r");
// Reading xml data from file
while($data = fread($filePointer, 4096)) {
// Parsing XML data
xml_parse($parser, $data, feof($filePointer)) or
// Display 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 to xml parser
xml_parser_free($parser);
fclose($filePointer);
// Character handler function for XML parser
function char_print($parser, $data) {
echo $data;
}
?>
Output:
user123 firstname lastname +91-9876543210 I am John Doe. Live in Kolkata, India.
geeks.xml file:
<?xml version="1.0" encoding="utf-8"?>
<user>
<username> user123 </username>
<name> firstname lastname </name>
<phone> +91-9876543210 </phone>
<detail> I am John Doe. Live in Kolkata, India. </detail>
</user>
Program 2:
<?php
// Creating an XML parser
$parser = xml_parser_create();
// Element handler function named "starting_handler"
// enables custom manipulation for output
function starting_handler($parser,
$element_name, $element_attrs) {
switch($element_name) {
case "USER":
echo "<u>USER DATA</u><br>";
break;
case "USERNAME":
echo "Username: ";
break;
case "NAME":
echo "Name: ";
break;
case "PHONE":
echo "Phone no: ";
break;
case "DETAIL":
echo "More about user: ";
}
}
// Element handler function named "ending_handler"
function ending_handler($parser, $element_name) {
echo "<br>";
}
// Character handler function named "char_handler"
function char_handler($parser, $data) {
echo $data;
}
// Setting the element handlers
xml_set_element_handler($parser,
"starting_handler", "ending_handler");
// Setting character data handler
xml_set_character_data_handler($parser, "char_handler");
// Opening xml file
$fp = fopen("geeks.xml", "r");
// Reading xml file
while ($data = fread($fp, 4096)) {
xml_parse($parser, $data, feof($fp)) or
// Display error while xml parsing
die (sprintf("XML Error: %s at line %d",
// Error string
xml_error_string(xml_get_error_code($parser)),
// Error line number
xml_get_current_line_number($parser))
);
}
// Free to xml parser
xml_parser_free($parser);
// Closing file stream
fclose($fp);
?>
Output:
USER DATA Username: user123 Name: firstname lastname Phone no: +91-9876543210 More about user: I am John Doe. Live in Kolkata, India.
Reference: https://www.php.net/manual/en/function.xml-parser-create.php