Curriculum
Course: PHP Basic
Login

Curriculum

PHP Basic

PHP Install

0/1

PHP Casting

0/1

PHP Constants

0/1

PHP Magic Constants

0/1

PHP Operators

0/1

PHP Reference

0/276
Text lesson

PHP XML Expat

The XML Expat Parser

The Expat parser is an event-driven parser.

Consider the following XML fragment:

<from>Jani</from>

An event-based parser processes the XML as a series of three events:

  1. Start element: from
  2. Start CDATA section, value: Jani
  3. Close element: from

The XML Expat parser functions are included in the PHP core, so no additional installation is required to use them.

The XML File

The example below uses the XML file “note.xml”:

<?xml version=”1.0″ encoding=”UTF-8″?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don’t forget me this weekend!</body>
</note>

Initializing the XML Expat Parser

We need to initialize the XML Expat Parser in PHP, set up handlers for various XML events, and then parse the XML file.

Example

<?php
// Initialize the XML parser
$parser=xml_parser_create();

// Function to use at the start of an element
function start($parser,$element_name,$element_attrs) {
  switch($element_name) {
    case “NOTE”:
    echo “– Note –<br>”;
    break;
    case “TO”:
    echo “To: “;
    break;
    case “FROM”:
    echo “From: “;
    break;
    case “HEADING”:
    echo “Heading: “;
    break;
    case “BODY”:
    echo “Message: “;
  }
}

// Function to use at the end of an element
function stop($parser,$element_name) {
  echo “<br>”;
}

// Function to use when finding character data
function char($parser,$data) {
  echo $data;
}

// Specify element handler
xml_set_element_handler($parser,“start”,“stop”);

// Specify data handler
xml_set_character_data_handler($parser,“char”);

// Open XML file
$fp=fopen(“note.xml”,“r”);

// Read data
while ($data=fread($fp,4096)) {
  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)));
}

// Free the XML parser
xml_parser_free($parser);
?>

Explanation of the example:

  1. Initialize the XML parser using xml_parser_create().
  2. Define functions for handling different XML events.
  3. Use xml_set_element_handler() to specify the functions for opening and closing tag events.
  4. Use xml_set_character_data_handler() to specify the function for handling character data.
  5. Parse the “note.xml” file with xml_parse().
  6. In case of errors, use xml_error_string() to convert XML error codes into textual descriptions.
  7. Call xml_parser_free() to free the memory allocated by xml_parser_create().