PHP SimpleXML handles the most common XML tasks, leaving the rest to other extensions.
SimpleXML is a new feature in PHP 5.
The SimpleXML extension provides a simple way to obtain the name and text of XML elements.
Compared to DOM or Expat parsers, SimpleXML can read text data from XML elements with just a few lines of code.
SimpleXML can convert XML documents (or XML strings) into objects, such as:
The element is converted into a single property of a SimpleXMLElement object. When there are multiple elements at the same level, they are placed in an array.
Properties are accessed using an associative array, where the index corresponds to the property name.
The text inside the element is converted to a string. If an element has multiple text nodes, they are arranged in the order in which they are found.
SimpleXML is very fast to use when performing basic tasks like:
Read/extract data from XML files/strings
Edit text node or attribute
However, when dealing with advanced XML, such as namespaces, it's better to use the Expat parser or the XML DOM.
Starting with PHP 5, SimpleXML functions are part of the core of PHP. No installation is required to use these functions.
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:
Output the keys and elements of the $xml variable (which is a SimpleXMLElement object):
<?php $xml = simplexml_load_file ( " note.xml " ) ; print_r ( $xml ) ; ?>The above code will output:
SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )
Output data for each element in an XML file:
<?php $xml = simplexml_load_file ( " note.xml " ) ; echo $xml -> to . " <br> " ; echo $xml -> from . " <br> " ; echo $xml -> heading . " <br> " ; echo $xml -> body ; ?>The above code will output:
ToveJaniReminderDon't forget me this weekend!
Output the element name and data for each child node:
<?php $xml = simplexml_load_file ( " note.xml " ) ; echo $xml -> getName ( ) . " <br> " ; foreach ( $xml -> children ( ) as $child ) { echo $child -> getName ( ) . " : " . $child . " <br> " ; } ?>The above code will output:
noteto: Tovefrom: Janiheading: Reminderbody: Don't forget me this weekend!
To learn more about PHP SimpleXML functions, visit our PHP SimpleXML reference manual.