Hallo... habe 2 Dateien... einmal XML Datei und PH Datei, aber der Parser macht nicht, was er soll :-(
Habt ihr Rat?
condor.xml:
und condor.php:
Habt ihr Rat?
condor.xml:
PHP-Code:
<?xml version="1.0" encoding="UTF-8" ?>
<availabilityResponse>
<flightList fromIata="SXF" toIata="PMI" flightsFound="2">
<flightOptions>
<flightOption>
<fromDate>2006-10-04</fromDate>
<fromTime>06:20:00</fromTime>
<flightNum>DE3780</flightNum>
<price amount="139.00" currency="EUR" specialOffer="true" />
</flightOption>
<flightOption>
<fromDate>2006-10-04</fromDate>
<fromTime>09:50:00</fromTime>
<flightNum>DE3888</flightNum>
<price amount="187.00" currency="EUR" specialOffer="true" />
</flightOption>
</flightOptions>
</flightList>
<flightList fromIata="PMI" toIata="SXF" flightsFound="2">
<flightOptions>
<flightOption>
<fromDate>2006-09-25</fromDate>
<fromTime>14:40:00</fromTime>
<flightNum>DE1821</flightNum>
<price amount="109.00" currency="EUR" specialOffer="true" />
</flightOption>
<flightOption>
<fromDate>2006-10-06</fromDate>
<fromTime>08:20:00</fromTime>
<flightNum>DE5717</flightNum>
<price amount="159.00" currency="EUR" specialOffer="true" />
</flightOption>
</flightOptions>
</flightList>
</availabilityResponse>
und condor.php:
PHP-Code:
<?php
// Umwandlungstabelle definieren
$tag_tabelle = array(
"FROMDATE" => "B",
"FROMTIME" => "B",
"FLIGHTNUM" => "P"
);
// start_element() - wird vom XML-Parser bei öffnenden
// Tags aufgerufen
function start_element( $parser, $name, $attribute )
{
// Umwandlungstabelle in den lokalen Scope holen
global $tag_tabelle;
// Testen, ob den aktuelle Tag in der Tabelle definiert ist
if( isset( $tag_tabelle[ $name ] ) )
{
// öffnenden Tag ausgeben
print "<" . $tag_tabelle[ $name ] . ">";
}
}
// end_element() - wird vom XML-Parser bei schließenden
// Tags aufgerufen
function end_element( $parser, $name )
{
// Umwandlungstabelle in den lokalen Scope holen
global $tag_tabelle;
// Testen, ob der aktuelle Tag in der Tabelle definiert ist
if( isset( $tag_tabelle[ $name ] ) )
{
// Schließenden Tag ausgeben
print "</" . $tag_tabelle[ $name ] . ">";
}
}
// daten() - wird vom XML-Parser für CDATA-Bereiche aufgerufen
function daten( $parser, $data )
{
// Datenbereich ausgeben
print $data;
}
// Instanz des XML-Parsers erzeugen
$parser = xml_parser_create();
// Parameter des XML-Parsers setzen
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, true );
// Handler für Elemente ( öffnende / schließende Tags ) setzen
xml_set_element_handler( $parser, "start_element", "end_element" );
// Handler für Daten ( CDATA ) setzen
xml_set_character_data_handler( $parser, "daten" );
// Versuchen, die Datei zu öffnen
if (! ( $fp = fopen( "condor.xml", "r" ) ) )
{
// Fehler -> Ausführung abbrechen
die( "XML Fehler: Konnte Datei nicht öffnen." );
}
// Datei zeilenweise auslesen
while( $data = fread( $fp, 4096 ) )
{
// Versuchen, die aktuelle Zeile zu parsen
if( !xml_parse( $parser, $data, feof( $fp ) ) )
{
// Fehler -> Ausführung abbrechen
die( "XML Fehler: " .
xml_error_string( xml_get_error_code( $parser ) ) .
" in Zeile " .
xml_get_current_line_number( $parser )
);
}
}
// Vom XML-Parser belegten Speicher freigeben
xml_parser_free( $parser );
?>
Könnt Ihr helfen? *help*
Kommentar