Use this, for example, with the Sablotron XSL
parser.
[15-4-2003]
This is a simple function that converts a PHP array to XML. You supply the array, the script returns the XML. This function can be useful to send your PHP output to, for example, the Sablotron XSL engine.
Run as: array_to_xml($array);
The array:
array('file'=>array(0=>'myfile', 1=>'yourfile'), 'user'=>array(0=>array('name'=>'Foo'), 1=>array('name'=>'Bar')), 'time'=>array('day'=>'tuesday', 'week'=>23));
is converted to XML:
<?xml version="1.0" encoding="ISO-8859-1"?> <array> <file> myfile </file> <file> yourfile </file> <user> <name> Foo </name> </user> <user> <name> Bar </name> </user> <time> <day> tuesday </day> <week> 23 </week> </time> </array>
function array_to_xml($array, $level=1) { $xml = ''; if ($level==1) { $xml .= '<?xml version="1.0" encoding="ISO-8859-1"?>'. "\n<array>\n"; } foreach ($array as $key=>$value) { $key = strtolower($key); if (is_array($value)) { $multi_tags = false; foreach($value as $key2=>$value2) { if (is_array($value2)) { $xml .= str_repeat("\t",$level)."<$key>\n"; $xml .= array_to_xml($value2, $level+1); $xml .= str_repeat("\t",$level)."</$key>\n"; $multi_tags = true; } else { if (trim($value2)!='') { if (htmlspecialchars($value2)!=$value2) { $xml .= str_repeat("\t",$level). "<$key><![CDATA[$value2]]>". "</$key>\n"; } else { $xml .= str_repeat("\t",$level). "<$key>$value2</$key>\n"; } } $multi_tags = true; } } if (!$multi_tags and count($value)>0) { $xml .= str_repeat("\t",$level)."<$key>\n"; $xml .= array_to_xml($value, $level+1); $xml .= str_repeat("\t",$level)."</$key>\n"; } } else { if (trim($value)!='') { if (htmlspecialchars($value)!=$value) { $xml .= str_repeat("\t",$level)."<$key>". "<![CDATA[$value]]></$key>\n"; } else { $xml .= str_repeat("\t",$level). "<$key>$value</$key>\n"; } } } } if ($level==1) { $xml .= "</array>\n"; } return $xml; }