1. Jetzt kopierst du das 1:1
2. lerne PHP, es hilft
Du kannst die Funktion irgendwo hin kopieren, musst sie einfach aufrufen und den Array weiterverarbeiten.
CODE
<?PHP
$xmlstring = "<?xml version=1.0 ?>
<MAIN>
<1>
<sparte>Sparte1</sparte>
<keywords>Keywords1</keywords>
</1>
<2>
<sparte>Sparte2</sparte>
<keywords>Keywords2</keywords>
</2>
</MAIN>";
$arr = xml2array($xmlstring);
echo $arr['MAIN']['1']['sparte'],$arr['MAIN']['1']['keywords'];
echo $arr['MAIN']['2']['sparte'],$arr['MAIN']['2']['keywords'];
/**
* Debug! */
do_printR($arr);
function do_printR($arr) {
if (is_array($arr)) {
while (list($k,$v) = each($arr)) {
if (is_array($arr[$k])) {
echo $k.": Array<br>\n";
do_printR($arr[$k]);
} else {
echo $k.": ".$v."<br>\n";
}
}
}
}
// end debug
// convert an XML-string to an array
function xml2array($s) {
if ($Atmp1=explode('>',$s,2)
/* && ereg('^<\?xml (.*)\?$',$Atmp1[0],$Atmp2)*/) {
// $A['xml']=$Atmp2[1];
xml2array_sub($A,$Atmp1[1]);
}
return $A;
}
function xml2array_sub(&$A,$s) {
global $error_msg;
for ($c=0;ereg('<([^<>/ ]*)( [^<>]*)?/>(.*)',$s,$Atmp1) or
ereg('<([^<>/ ]*)( [^<>]*)?>(.*)',$s,$Atmp1) and
$Atmp2=explode('</'.$Atmp1[1].'>',$Atmp1[3],2);++$c) {
$E=array();
$tag=$Atmp1[1];
if ($Atmp1[2]) {
$Atmp3=explode(' ',substr($Atmp1[2],1));
foreach ($Atmp3 as $d) {
$Atmp4=explode('=',$d,2);
$Atmp4[1]=ereg_replace('^"(.*)"$','\1',$Atmp4[1]);
$E[$Atmp4[0]]=$Atmp4[1];
}
}
if ($Atmp2) {
if (!xml2array_sub($E,$Atmp2[0])) {
$E=$Atmp2[0];
}
$s=$Atmp2[1]; //rest of the xml-code
$Atmp2=false;
}
else {
$s=$Atmp1[3]; //rest of the xml-code
}
if ($A[$tag]) { //does it already exist?
//not already a numberically indexed array?
if (!is_array($A[$tag]) or !$A[$tag][0]) {
$Atag=$A[$tag]; //remove element again
unset($A[$tag]);
//make old element first element of it's former self
$A[$tag][]=$Atag;
}
if ($E) {
$A[$tag][]=$E; //add new element
}
}
else {
if ($E) {
$A[$tag]=$E;
if ($tag=='$ErrorMsg') $error_msg=$E;
}
}
}
return $c;
}