How to convert array to SimpleXML in PHP - GeeksforGeeks

22 Nov, 2018
Many times need to store the data as a XML format into the database or into the file for later use. To fulfill this requirement need to convert data to XML and save XML file.
The SimpleXML extension functions provides the tool set to convert XML to an object. Those objects deals with normal property selectors and array iterators.
Example 1:
<?php// Code to convert php array to xml document  // Define a function that converts array to xml.function arrayToXml($array, $rootElement = null, $xml = null) {    $_xml = $xml;          // If there is no Root Element then insert root    if ($_xml === null) {        $_xml = new SimpleXMLElement($rootElement !== null ? $rootElement : '<root/>');    }          // Visit all key value pair    foreach ($array as $k => $v) {                  // If there is nested array then        if (is_array($v)) {                           // Call function for nested array            arrayToXml($v, $k, $_xml->addChild($k));            }                      else {                          // Simply add child element.             $_xml->addChild($k, $v);        }    }          return $_xml->asXML();}  // Creating an array for demo$my_array = array ('name' => 'GFG','subject' => 'CS',      // Creating nested array.    'contact_info' => array (    'city' => 'Noida',    'state' => 'UP',    'email' => 'feedback@geeksforgeeks.org'    ),);  // Calling arrayToxml Function and printing the resultecho arrayToXml($my_array);?>
Output:
<?xml version="1.0"?>
<root>
    <name> GFG </name>
    <subject> CS </subject>
    <contact_info >
        <city > Noida < /city >
        <state > UP < /state >
        <email > feedback@geeksforgeeks.org </email>
    <contact_info>
<root>

The above problem ca be solved using array_walk_recursive() function. This function converts array to xml document where keys of array are converted into values and values of array are converted into element of xml.
Example 2:
<?php// Code to convert php array to xml document  // Creating an array$my_array = array (    'a' => 'x',    'b' => 'y',          // creating nested array    'another_array' => array (        'c' => 'z',    ),);  // This function create a xml object with element root.$xml = new SimpleXMLElement('<root/>');  // This function resursively added element// of array to xml documentarray_walk_recursive($my_array, array ($xml, 'addChild'));  // This function prints xml document.print $xml->asXML();?>
Output:
<?xml version="1.0"? >
<root >
       <x> a </x >
       <y> b </y >
       <z> c </z >
</root >

Note: If the system generate error of type :PHP Fatal error: Uncaught Error: Class ‘SimpleXMLElement’ not found in /home/6bc5567266b35ae3e76d84307e5bdc78.php:24 then simply install php-xml, php-simplexml packages.
Picked
PHP
PHP Programs
Web Technologies
PHP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
How to Insert Form Data into Database using PHP ?
How to convert array to string in PHP ?
How to Upload Image into Database and Display it using PHP ?
How to check whether an array is empty using PHP?
How to receive JSON POST with PHP ?
How to Insert Form Data into Database using PHP ?
How to convert array to string in PHP ?
How to call PHP function on the click of a Button ?
How to Upload Image into Database and Display it using PHP ?
How to check whether an array is empty using PHP?