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 SimpleXML Parser

The SimpleXML Parser

SimpleXML is a tree-based parser that simplifies retrieving an element’s name, attributes, and textual content if the XML document’s structure is known.

It converts an XML document into a data structure that can be iterated like arrays and objects.

Compared to DOM or the Expat parser, SimpleXML requires fewer lines of code to read text data from elements.

Installation

Starting with PHP 5, SimpleXML functions are included in the PHP core, so no additional installation is needed to use them.

PHP SimpleXML – Read From String

The PHP simplexml_load_string() function is used to read XML data from a string.

 

For example, if you have a variable containing XML data, it would look like this:

$myXMLData =
<?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>“;

The example below demonstrates how to use the simplexml_load_string() function to read XML data from a string:

Example

<?php
$myXMLData =
“<?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>“;

$xml=simplexml_load_string($myXMLData) or die(“Error: Cannot create object”);
print_r($xml);
?>

The output of the code above will be:

SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don’t forget me this weekend! )

Error Handling Tip: Utilize libxml functionality to retrieve all XML errors when loading a document and then iterate through the errors. The following example demonstrates this by attempting to load a broken XML string:

Example

<?php
libxml_use_internal_errors(true);
$myXMLData =
“<?xml version=’1.0′ encoding=’UTF-8′?>

<document>
<user>John Doe</wronguser>
<email>[email protected]</wrongemail>
</document>“;

$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
  echo “Failed loading XML: “;
  foreach(libxml_get_errors() as $error) {
    echo “<br>“, $error->message;
  }
} else {
  print_r($xml);
}
?>

The output of the code above will be:

Failed loading XML:
Opening and ending tag mismatch: user line 3 and wronguser
Opening and ending tag mismatch: email line 4 and wrongemail

PHP SimpleXML – Read From File

The PHP simplexml_load_file() function is used to read XML data from a file.

For example, if you have an XML file named “note.xml” that looks like this:

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

The example below illustrates how to use the simplexml_load_file() function to read XML data from a file:

Example

<?php
$xml=simplexml_load_file(“note.xml”or die(“Error: Cannot create object”);
print_r($xml);
?>

The output of the code above will be:

SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don’t forget me this weekend! )

Tip: The next chapter will demonstrate how to retrieve node values from an XML file using SimpleXML!