Um ein XML-Dokument zu erstellen benötigt man nur einen Texteditior, wie etwa
Notepad.
Mit
XML können Sie
eigene Tags erstellen.
Diese Tags sind gültig, sofern die Syntax korrekt ist.
In den folgenden Beispielen, möchte ich Ihnen zeigen wie man ein Inhaltsverzeichnis für eine Website erstellen kann.
•
Beispiel einer XML-Datei: (
data.xml)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<ROOT>
<IDEM>
<pubDate>8.2.2011</pubDate>
<LINK>demolink1.htm</LINK>
<NAME>Demolink 1</NAME>
<BESCHREIBUNG>Beschreibung 1</BESCHREIBUNG>
</IDEM>
<IDEM>
<pubDate>19.7.2011</pubDate>
<LINK>demolink2.htm</LINK>
<NAME>Demolink 2</NAME>
<BESCHREIBUNG>Beschreibung 2</BESCHREIBUNG>
</IDEM>
</ROOT>
Wie an der Struktur des Dokumentes erkennbar wird, ist eine feste Baumstruktur vorhanden.
Sie beschreibt die Verschachtelung der einzelnen Befehle. Das sogenannte Wurzelelement ist
<ROOT> </ROOT>. Es ist das erste Element,
welches den kompletten Datensatz umringt. Diesem Wurzelelement sind weitere Elemente untergeordnet.

Beachten Sie die Großschreibung der
XML-Tags.
Außerdem
muß jeder geöffnete
XML-Tag wieder geschlossen werden.
Tipp: Wenn Sie testen möchten ob Ihre XML-Datei richtig funktioniert, dann
geben Sie den Pfad zur Datei im Browser
Firefox ein. Es sollte dann die erstellte
Datei
ohne
Fehlermeldung ausgegeben werden.
• XML-Datei über PHP auslesen und anzeigen
Die Ausgabe in HTML erfolgt in diesem Beispiel mit einer
Definitionsliste.
Quelltext: „
xml.php”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!DOCTYPE html> <html> <head> <title>XML-Datei auslesen und anzeigen</title> </head> <body>
<?php $daten = file_get_contents("data.xml"); // Datei einlesen $daten = explode("<IDEM>" , $daten); // Inhalt in ein Array zerlegen
for ($zaehler = 1; $zaehler < count($daten); $zaehler++) { preg_match("~<pubDate>(.*)</pubDate>~" , $daten[$zaehler] , $datum); // Datum auslesen preg_match("~<LINK>(.*)</LINK>~" , $daten[$zaehler] , $link); // Link auslesen (wird in $link[1] gespeichert) preg_match("~<NAME>(.*)</NAME>~" , $daten[$zaehler] , $name); // Name u. Beschreibung auslesen preg_match("~<BESCHREIBUNG>(.*)</BESCHREIBUNG>~" , $daten[$zaehler] , $beschreibung);
// Link Name und Beschreibung in HTML-Tags einbauen und ausgeben echo "<dl>\n"; echo " <dt>" . $datum[1] . " - <a href='" . trim($link[1]) . "'>" . $name[1] . "</a> </dt>\n"; echo " <dd> " . $beschreibung[1] . " </dd>\n"; echo "</dl>\n"; } ?>
</body> </html>
|
• In einer XML-Datei nach einem Suchbegriff suchen
Besonders schnell ist die folgende Suchfunktion, da diese keine
großen Seiten mit vielen HTML-Tags durchsuchen muß.
Dabei muß beachtet werden, das möglichst viele Stichwörter
zur Datei, im XML-Tag
<BESCHREIBUNG> vorhanden sind.
Beispiel:
<BESCHREIBUNG>Fußballergebnisse der Saison 2011/2012
und eine Tabelle der Mannschaftsaufstellungen </BESCHREIBUNG>
Da die Suchfunktion nicht zwischen Groß.- und Kleinschreibung unterscheidet
und Wortanfänge außer acht lässt, bekommt man gute Suchergebnisse wenn man
nach Suchbegriffen wie zum Beispiel
aufstellungen, ergebnisse oder
Saison sucht.
Quelltext: „
xml_suche.php”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<!DOCTYPE html> <html> <head> <title>In einer XML-Datei nach einem Suchbegriff suchen</title> </head> <body>
<form action="<?php echo $_SERVER["SCRIPT_NAME"] ?>" method="post"> Suchbegriff: <input type="text" name="suchbegriff"> <input type="submit" value="Suche"> </form>
<?php // Hier die zu durchsuchenden Dateien eintragen $xml_dateien = array( "data.xml", "data2.xml", );
// Überprüfen ob über POST gesendet wurde if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Überprüfen ob der Suchbegriff mindestens 3 Zeichen enthält if (strLen($_POST["suchbegriff"]) > 2) {
$suchergebnis = ""; // Hier werden die Suchergebnisse gespeichert $suchergebniszahl = 0; // Zähler für die Suchergebnisse
for ($zaehler = 0; $zaehler < count($xml_dateien); $zaehler++) { $inhalt = file_get_contents($xml_dateien[$zaehler]); // Datei einlesen $inhalt = explode("<IDEM>" , $inhalt); // Inhalt in ein Array zerlegen
for ($inhaltszaehler = 0; $inhaltszaehler < count($inhalt); $inhaltszaehler++) { // Inhalt mit dem Suchbegriff überprüfen if (stristr($inhalt[$inhaltszaehler], $_POST["suchbegriff"]) == true) { // Datum, Link, Name und Beschreibung auslesen preg_match("~<pubDate>(.*)</pubDate>~" , $inhalt[$inhaltszaehler] , $datum); preg_match("~<LINK>(.*)</LINK>~" , $inhalt[$inhaltszaehler] , $link); preg_match("~<NAME>(.*)</NAME>~" , $inhalt[$inhaltszaehler] , $name); preg_match("~<BESCHREIBUNG>(.*)</BESCHREIBUNG>~" , $inhalt[$inhaltszaehler] , $beschreibung); $suchergebnis .= $datum[1] . " - "; // Datum wird eingefügt $suchergebnis .= "<a href='" . trim($link[1]) . "'>"; // Link wird eingefügt $suchergebnis .= $name[1] . "</a>"; // Name wird eingefügt $suchergebnis .= " - " . $beschreibung[1] . "<br>\n" ; // Beschreibung wird eingefügt $suchergebniszahl++; // Zähler wird erhöht } } } // Ausgabe des Suchergebnisses if ($suchergebniszahl == 0) { echo "<b>Leider nichts gefunden!</b>"; } else { echo "" . ($suchergebniszahl > 1) ? "<b>Es wurden $suchergebniszahl Seiten gefunden:</b><br>" : "<b>Es wurde eine Seite gefunden;</b><br>"; echo $suchergebnis; } } } ?>
</body> </html>
|