Latest web development tutorials
 

PHP xml_parse() Function


< Complete PHP XML Reference

Definition and Usage

The xml_parse() function parses an XML document.

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

Syntax

xml_parse(parser,xml,end)

Parameter Description
parser Required. Specifies XML parser to use
xml Required. Specifies XML data to parse
end Optional. If this parameter is TRUE, the data in the "xml" parameter is the last piece of data sent in this parse.

Note: Entity errors are reported at the end of the parse. And will only show if the "end" parameter is TRUE


Tips and Notes

Tip: To create an XML parser, use the xml_parser_create() function.


Example 1

XML File

<?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>

PHP Code

<?php
$parser=xml_parser_create();

function char($parser,$data)
  {
  echo $data;
  }

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

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)));
  }

xml_parser_free($parser);
?>

The output of the code above will be:

Tove Jani Reminder Don't forget me this weekend!

Example 2

Using the same XML file but displaying the XML data in another way:

<?php
$parser=xml_parser_create();

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 stop($parser,$element_name)
  {
  echo "<br />";
  }

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,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)));
  }

xml_parser_free($parser);
?>

The output of the code above will be:

-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!

< Complete PHP XML Reference