Blog : Convert XML to an array in PHP
Convert XML to an array in PHP
Code
/**
* Take XML content and convert
* if to a PHP array.
* @param string $xml Raw XML data.
* @param string $main_heading If there is a primary heading within the XML that you only want the array for.
* @return array XML data in array format.
*/
function xml_to_array($xml,$main_heading = '') {
$deXml = simplexml_load_string($xml);
$deJson = json_encode($deXml);
$xml_array = json_decode($deJson,TRUE);
if (! empty($main_heading)) {
$returned = $xml_array[$main_heading];
return $returned;
} else {
return $xml_array;
}
}
ExplanationConsider the following XML data:
$xml = '
John
Doe
123 Street Apt. 9 Chicago
Getting all XML data into an array$data_array = xml_to_array($xml);
var_dump($data_array);
The output would be:
array (size=3)
'first_name' => string 'John' (length=4)
'last_name' => string 'Doe' (length=3)
'address' =>
array (size=3)
'line1' => string '123 Street' (length=10)
'line2' => string 'Apt. 9' (length=6)
'city' => string 'Chicago' (length=7)
Getting the address only into an array
$data_array = xml_to_array($xml,'address');
var_dump($data_array);
The output would be:
array (size=3)
'line1' => string '123 Street' (length=10)
'line2' => string 'Apt. 9' (length=6)
'city' => string 'Chicago' (length=7)