XML-File in Tabelle laden

Gesperrt
busdriver
Beiträge: 28
Registriert: Fr 28. Okt 2005, 15:37
Wohnort: Wien
Kontaktdaten:

XML-File in Tabelle laden

Beitrag von busdriver » Mo 20. Nov 2006, 16:42

Hallo Forum,

ich muss ein XML-File

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8" ?>
<DATA>
<REPORT_DATE>6-Nov-2006</REPORT_DATE>

<IP_RECORD>
<ADDRESS>xxxxxxx</ADDRESS>
<HOSTNAME>xxxxxxxx</HOSTNAME>
<OWNER>xxxxxxxxx</OWNER>
</IP_RECORD>

<IP_RECORD>
<ADDRESS>xxxxxxx</ADDRESS>
<HOSTNAME>xxxxxxxx</HOSTNAME>
<OWNER>xxxxxxxxx</OWNER>
</IP_RECORD>
</DATA>

in eine Tabelle laden, deren Felder gleich dem XML-Files ist.

So nun habe ich die XML-Classe gefunden und versucht aus der Doku bzw. Forumeinträgen zum Thema mir die Verwendung der Klasse anzueignen.

Aber irgendwie schaffe ich das nicht. Ist da jemand der mir dabei unter die Arme greifen kann?

lg
rg
****************************************
Achtung bin Contenido-AZUBI;-)! Also Bitte Nachsicht walten lassen. Danke.

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Mo 20. Nov 2006, 17:13

Probier es doch mal mit folgendem Moduloutput (die Funktionen stammen von hier):

Code: Alles auswählen

<?php

function xml2array($s) {
if ($Atmp1=explode('>',$s,2)
/* && ereg('^<\?(xml .*)\?$',$Atmp1[0],$Atmp2)*/) {
//$A['xml']=$Atmp2[1];
//XML Version, kümmert niemanden
//funktioniert nur bei korrekten XML eingaben
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;
}

$xmlstring = "<?xml version="1.0" encoding="utf-8" ?>
<DATA>
<REPORT_DATE>6-Nov-2006</REPORT_DATE>

<IP_RECORD>
<ADDRESS>xxxxxxx</ADDRESS>
<HOSTNAME>xxxxxxxx</HOSTNAME>
<OWNER>xxxxxxxxx</OWNER>
</IP_RECORD>

<IP_RECORD>
<ADDRESS>xxxxxxx</ADDRESS>
<HOSTNAME>xxxxxxxx</HOSTNAME>
<OWNER>xxxxxxxxx</OWNER>
</IP_RECORD>
</DATA> ";

$arr = xml2array($xmlstring);

print_r($arr);

?>

busdriver
Beiträge: 28
Registriert: Fr 28. Okt 2005, 15:37
Wohnort: Wien
Kontaktdaten:

Beitrag von busdriver » Di 21. Nov 2006, 11:25

Seas Dodger77,

vielen Dank für die Hilfe. Ich versteh zwar Nüsse wie das Script das macht was es macht. Aber das was es macht ist genau das was ich brauch.

Danke.

lg
rg
****************************************
Achtung bin Contenido-AZUBI;-)! Also Bitte Nachsicht walten lassen. Danke.

Gesperrt