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
 
          
 XML Filter
									
									
									XML Filter
								 Moderator
 Moderator
Kommentar