hallo Florian!
Für mich persönlich wäre es einfacher Kindknoten/Strings/Empty als Value anzunehmen, aber das steht Dir natürlich frei. Habe nochmal ein wenig rumgemurchst und nun scheint mach_xml() aus einem anderen Datenfeld folgendes zu machen:
<?xml version="1.0" ?>
<root>
<music id="199" name="FirstName">
<album albumid="1234" albumname="The King">
<tracks albumid="1234">
<track albumid="1234">VALUE1</track>
<track albumid="1234">VALUE2</track>
</tracks>
<information albumid="1234">
<artist attr="0">Artist (fehlt in meinem array auch!!!</artist>
<author attr="0">Artist (fehlt in meinem array auch!!!</author>
<lenght attr="0">Läge würde ich als Attribut vergeben</lenght>
</information>
</album>
</music>
</root>
<?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.='</'.$a['nodeName'].'>';
}
}
else
{
# Element ist leer
$element.=$S.'/>';
}
return($element);
#unset($element,$k,$v);
}
$a=array(
'nodeName' =>'root',
'nodeValues' =>array(
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' =>'VALUE1'),
array(
'nodeName' =>'track',
'nodeAttr' =>array('albumid'=>'1234'),
'nodeValues' =>'VALUE2')
)
),
array(
'nodeName' =>'information',
'nodeAttr' =>array(
'albumid'=>'1234'),
'nodeValues'=>array(
array(
'nodeName' =>'artist',
'nodeAttr' =>array(
'attr'=>0),
'nodeValues'=>'Artist (fehlt in meinem array auch!!!'),
array(
'nodeName' =>'author',
'nodeAttr' =>array(
'attr'=>0),
'nodeValues'=>'Artist (fehlt in meinem array auch!!!'),
array(
'nodeName' =>'lenght',
'nodeAttr' =>array(
'attr'=>0),
'nodeValues'=>'Länge würde ich als Attribut vergeben')
)
)
)
)
)
)
)
);
echo mach_xml($a);
?>
Gruß aus Berlin!
eddi