hallo florian
habe mir meinen Müll nochmals zur Brust genommen und folgendes ist nun funktionstüchtig herausgekommen:
<?php
function mach_xml($a,$b=array('',TRUE))
{
Definition von benötigkten Variablen
$br="\n";
$S =' ';
Aufbau des Elements
$element= $b[1] ? '<?xml version="1.0" ?>' : '';
$element.=$br.$b[0].'<'.$a['nodeName'];
Aufbau der Attribute
if(is_array($a['nodeAttr']))
{
foreach($a['nodeAttr'] as $k=>$v)
{
$element.=$S.$k.'="'.$v.'"';
}
}
Bestimmung des Inhalts
if($a['nodeValues']!==FALSE)
{
# Bestimmung Welche Art Inhalt vorliegt
if(is_array($a['nodeValues']))
{
$element.='>';
# Aufbau der Kindelemente
foreach($a['nodeValues'] as $v)
{
# Rekursion auf die Kindelemente
$element.=mach_xml($v,array($b[0]."\t",FALSE));
}
$element.=$br.$b[0].'</'.$a['nodeName'].'>';
}
else
{
# Kindelement ist ein Textnode
$element.='>'.$a['nodeValues'];
$element.=$br.$b[0].'</'.$a['nodeName'].'>';
}
}
else
{
# Element ist leer
$element.=$S.'/>';
}
return($element);
#unset($element,$k,$v);
}
Das Datenfeld muß anders aufgebeut werden!
$a=array(
'nodeName' =>'music',
'nodeAttr' =>array(
'id' =>199,
'name' =>'FirstName'),
'nodeValues' =>array(
array(
'nodeName' =>'album',
'nodeAttr' =>array(
'albumid' =>'1234',
'albumname' =>'The King'),
'nodeValues' =>array(
array(
'nodeName' =>'tracks',
'nodeAttr' =>array(
'albumid'=>'1234'),
'nodeValues' =>array(
array(
'nodeName' =>'track',
'nodeAttr' =>array('albumid'=>'1234'),
'nodeValues' =>false),
array(
'nodeName' =>'information',
'nodeAttr' =>array('albumid'=>'1234'),
'nodeValues'=>false),
),
)
)
)
)
);
echo mach_xml($a);
?>
Gruß aus Berlin!
eddi