PHP SimpleXML


PHP SimpleXML handles the most common XML tasks, leaving the rest to other extensions.


What is PHP SimpleXML?

SimpleXML is a new feature in PHP 5.

The SimpleXML extension provides a simple way to get the names and text of XML elements.

Compared to the DOM or Expat parsers, SimpleXML can read text data from XML elements in just a few lines of code.

SimpleXML can convert an XML document (or XML string) to an object, for example:

  • Elements are converted to single attributes of the SimpleXMLElement object. When multiple elements exist at the same level, they are placed in an array.
  • Attributes are accessed using associative arrays, where the indices correspond to attribute names.
  • Text inside elements is converted to strings. If an element has multiple text nodes, they are arranged in the order they are found.

SimpleXML is very quick to use when performing basic tasks like the following:

  • Read/extract data from XML files/strings
  • Edit text nodes or attributes

However, when handling advanced XML, such as namespaces, it is better to use the Expat parser or XML DOM.


Installation

As of PHP 5, SimpleXML functions are part of the PHP core. These functions can be used without installation.


PHP SimpleXML Examples

Suppose we have the following XML file,note.xml":

<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Now we want to output different information from the above XML file:

Example 1

Output the keys and elements of the $xml variable (which is a SimpleXMLElement object):

<?php $xml=simplexml_load_file("note.xml"); print_r($xml); ?>

Run example »

The above code will output:

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

Example 2

Output the data of each element in the XML file:

<?php $xml=simplexml_load_file("note.xml"); echo $xml->to . "<br>"; echo $xml->from . "<br>"; echo $xml->heading . "<br>"; echo $xml->body; ?>

Run example »

The above code will output:

Tove
Jani
Reminder
Don't forget me this weekend!

Example 3

Output the element name and data of each child node:

<?php $xml=simplexml_load_file("note.xml"); echo $xml->getName() . "<br>"; foreach($xml->children() as $child) { echo $child->getName() . ": " . $child . "<br>"; } ?>

Run example »

The above code will output:

note
to: Tove
from: Jani
heading: Reminder
body: Don't forget me this weekend!


More Information about PHP SimpleXML

For more information about PHP SimpleXML functions, please visit ourPHP SimpleXML Reference Manual。

Other Extensions