Hallo Leute!
Ich habe folgendes Problem:
Ich habe ein php-Script geschrieben um Daten aus einem XML-File zu lesen
Das funktioniert ja schon ganz gut jedoch:
Hat dieses XML-File über 1000 Einträge mit 60 verschiedenen Values (oder wie man das nennt) und das dauert extrem lange zum laden!!!
Nun möchte ich einen Filter einbauen, der mir z.b.: nur die Personen eines bestimmten Landes aus dem XML-File liest!!
Anmerkung: ich habe PHP-Version 4.3
Hier der Sourcecode meines PHP-Scripts:
Danke schon im Voraus
LG Manuel
Ich habe folgendes Problem:
Ich habe ein php-Script geschrieben um Daten aus einem XML-File zu lesen
Das funktioniert ja schon ganz gut jedoch:
Hat dieses XML-File über 1000 Einträge mit 60 verschiedenen Values (oder wie man das nennt) und das dauert extrem lange zum laden!!!
Nun möchte ich einen Filter einbauen, der mir z.b.: nur die Personen eines bestimmten Landes aus dem XML-File liest!!
Anmerkung: ich habe PHP-Version 4.3
Hier der Sourcecode meines PHP-Scripts:
PHP-Code:
function xmlize($data, $WHITE=1) {
$data = trim($data);
$vals = $index = $array = array();
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, $WHITE);
if ( !xml_parse_into_struct($parser, $data, $vals, $index) )
{
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
xml_parser_free($parser);
$i = 0;
$tagname = $vals[$i]['tag'];
if ( isset ($vals[$i]['attributes'] ) )
{
$array[$tagname]['@'] = $vals[$i]['attributes'];
} else {
$array[$tagname]['@'] = array();
}
$array[$tagname]["#"] = xml_depth($vals, $i);
return $array;
}
function xml_depth($vals, &$i) {
$children = array();
if ( isset($vals[$i]['value']) )
{
array_push($children, $vals[$i]['value']);
}
while (++$i < count($vals)) {
switch ($vals[$i]['type']) {
case 'open':
if ( isset ( $vals[$i]['tag'] ) )
{
$tagname = $vals[$i]['tag'];
} else {
$tagname = '';
}
if ( isset ( $children[$tagname] ) )
{
$size = sizeof($children[$tagname]);
} else {
$size = 0;
}
if ( isset ( $vals[$i]['attributes'] ) ) {
$children[$tagname][$size]['@'] = $vals[$i]["attributes"];
}
$children[$tagname][$size]['#'] = xml_depth($vals, $i);
break;
case 'cdata':
array_push($children, $vals[$i]['value']);
break;
case 'complete':
$tagname = $vals[$i]['tag'];
if( isset ($children[$tagname]) )
{
$size = sizeof($children[$tagname]);
} else {
$size = 0;
}
if( isset ( $vals[$i]['value'] ) )
{
$children[$tagname][$size]["#"] = $vals[$i]['value'];
} else {
$children[$tagname][$size]["#"] = '';
}
if ( isset ($vals[$i]['attributes']) ) {
$children[$tagname][$size]['@']
= $vals[$i]['attributes'];
}
break;
case 'close':
return $children;
break;
}
}
return $children;
}
function traverse_xmlize($array, $arrName = "array", $level = 0) {
foreach($array as $key=>$val)
{
if ( is_array($val) )
{
traverse_xmlize($val, $arrName . "[" . $key . "]", $level + 1);
} else {
$GLOBALS['traverse_array'][] = '$' . $arrName . '[' . $key . '] = "' . $val . "\"\n";
}
}
return 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////
$filename="test.xml";
$i=0;
$data = implode("", file($filename));
$xml = xmlize($data);
$people = $xml["NewDataSet"]["#"]["Table"];
echo "<table border='2' cellpadding='0' bordercolor='black'>";
for($i = 0; $i < sizeof($people); $i++) {
$person = $people[$i];
$Amtstitel = $person["#"]["Amtstitel"][0]["#"]." ";
$BeschrakadTitel= $person["#"]["BeschrakadTitel"][0]["#"]." ";
$Vorname = $person["#"]["Vorname"][0]["#"]." ";
$AnsprechpartnerName = $person["#"]["Ansprechpartner-Name"][0]["#"]." ";
$Name1 = $person["#"]["Name1"][0]["#"]." ";
$Amtstitel1 = $person["#"]["Amtstitel1"][0]["#"]." ";
$BeschrakadTitel1 = $person["#"]["BeschrakadTitel1"][0]["#"]." ";
$Vorname1 = $person["#"]["Vorname1"][0]["#"]." ";
$AnsprechpartnerName1 = $person["#"]["Ansprechpartner-Name1"][0]["#"]." ";
$Ort = $person["#"]["Ort"][0]["#"]." ";
// das passiert dann mit allen weiteren Values auch
print "<tr>";
print "<td nowrap>";print "$Amtstitel";
print "</td>";
print "<td nowrap>";print "$BeschrakadTitel";
print "</td>";
print "<td nowrap>";print "$Vorname";
print "</td>";
//Hier werden alle Values in einer Tabelle angezeigt
}
print "</table>";
LG Manuel
Kommentar