Super einfaches XML-Parser-Beispiel

Eckbert2

Aktives Mitglied
Datei inhalt.php

CODE <?php
function startElement($parser, $element_name, $element_attribute) {
global $ausgabe;
//Umwandeln in Kleinbuchstaben
$element_name = strtolower($element_name);
//Überprüfung des Elementnames
if ($element_name=="inhalt") {
$ausgabe .= "<h3>Inhalt</h3><p>";
}
}

function endElement($parser, $element_name) {
global $ausgabe;
// in Kleinbuchstaben umwandeln
$element_name = strtolower($element_name);
// Überprüfung des Names eines Elementes
if ($element_name=="inhalt") {
$ausgabe .= "</p>";
}
}

function cdata($parser, $element_inhalt) {
global $ausgabe;
// Der normale Text wird an $ausgabe angehängt
$ausgabe .= $element_inhalt;
}
$xmlFile = file("inhalt.xml");
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "cdata");

foreach($xmlFile as $elem)
{
xml_parse($parser, $elem);
}
xml_parser_free($parser);
echo $ausgabe;
?>



Datei inhalt.xml:


CODE <?xml version="1.0"?>
<inhalt>
Dies ist ein Platzhalter-Text.
</inhalt>

Quelle: drweb


Die beiden Datei auf den Server (PHP4) hauen und es läuft erstmal zum Verstehen...

Habe dazu trotzdem ein Paar Fragen...

Habe eine XML-Datei, die etwa so aussieht:


CODE <?xml version="1.0" encoding="UTF-8"?>
<availabilityResponse>
<flightList fromIata="DUS" toIata="PMI" flightsFound=”1”>
<flightOptions>
<flightOption>
<fromDate>2006-05-14</fromDate>
<fromTime>06:00:00</fromTime>
<flightNum>FLUG542</flightNum>
<price amount="49.00" currency="EUR" specialOffer="true"/>
</flightOption>
</flightOptions>
</flightList>


Wie kriege ich diese Verschachtelung in die PHP-Variablen?

Viele Grüße


 
QUOTE (Jeronymo @ Fr 8.9.2006, 21:25)Wie kriege ich diese Verschachtelung in die PHP-Variablen?

Mit Xml-Techniken.

Die Xml-Quelle als Xml-Document laden und mit DOM-Techniken (die es auch in PHP gibt, die ich aber mangels PHP-Verwendung nicht kenne) die Werte rausziehen.

Ein individuelles Extrahieren und Umformen widerspricht der Grundidee von Xml unmittelbar - dann bräuchte man ja Xml gar nicht verwenden.
 
Zurück
Oben