Eine XML-Datei ist ein textbasiertes Datenformat, das dazu dient, Daten zu strukturieren. Es ist systemunabhängig, was heißt, dass jede gängige Programmiersprache einen Parser für XML besitzt.
Daten werden nach bestimmten Gruppierungen sogenannten Tags zugeordnet. Ein Haus hat zum Beispiel einen Tag für dach, keller, stockwerk. Das sieht dann zum Beispiel so aus:
<haus>
<!-- Elemente -->
<dach>
</dach>
<stockwerk ebene="2">
</stockwerk>
<stockwerk ebene="1">
</stockwerk>
<erdgeschoss>
</erdgeschoss>
<keller>
<vorratskammer />
</keller>
</haus>
Daraus kann man dann verschiedene Informationen ableiten. In unserem Beispiel sehen wir somit, dass es ein Dach, 2 Stockwerke, ein Erdgeschoss und Keller gibt. Und der Keller hat noch eine Vorratskammer.
Dieses Beispiel ist sehr realitätsnah; natürlich gibt es dort auch deutlich abstraktere Varianten, wie RSS Feed oder eine ganze Webseite.
XML-Dateien können für verschiedene Zwecke verwendet werden, einer der bekanntesten Verwendungszwecke von XML ist HTML. HTML dient dazu, Webseitentexte nach semantisch sinnvollen Aufgaben zu strukturieren.
Es gibt verschiedenste Verwendungszwecke von XML, die weiter über HTML hinausgehen. Zum Beispiel besitzen die meisten Webseiten eine XML-Sitemap, um das Crawling von Webseiten zu erleichtern. Diese findet man meistens unter /sitemap.xml - so zum Beispiel auch bei HelloCoding. Dort ist die Sitemap unter https://hellocoding.de/sitemap.xml abzurufen.
Ein anderer bekannter Verwendungszweck für XML ist das Strukturieren von Daten für die Ausgabe in verschiedenen Formen oder Medien. Ein Beispiel dafür ist zum Beispiel ein RSS Feed Reader. Dieser greift auf XML-RSS-Daten zu, um diese zu parsen und nutzerfreundlich gesammelt auszugeben. Bei HelloCoding könnt ihr diesen Feed beispielsweise unter https://hellocoding.de/feed.xml finden.
DTD-Dateien ist die Abkürzung für Document Type Definition Dateien. In diesen Dateien werden Elemente, Attribute und deren Typen definiert.
Eine DTD ist notwendig für eine valide XML-Datei. Sie kann sowohl als eigene Datei definiert werden oder direkt im XML selbst über den DocType.
<!ELEMENT KundenManagment (Kunde*)>
<!ELEMENT Kunde (Name,Bank,VertragsLaufzeitStart,VertragsLaufzeitEnde,Produkte,Aufträge)>
<!ATTLIST Kunde Nummer CDATA #REQUIRED >
Die DTD-Datei in diesem Beispiel sagt aus, dass es einen Root Tag "KundenManagment" gibt, das mehrere Kunden mit den Tags (Name,Bank,VertragsLaufzeitStart,VertragsLaufzeitEnde,Produkte,Aufträge) und einem Attribut "Nummer" haben kann. Für eine vollständige DTD müssen die einzelnen Tags vom Kunden auch noch im Detail beschrieben werden. #REQUIRED steht dafür, dass ein Attribut notwendig ist und angegeben werden muss.
CDATA gibt den Inhalt des Attributes "Nummer" vor. Man kann sich CDATA als eine beliebige Zeichenkette vorstellen.
Eine XML-Datei besteht aus mehren verschieden Elementen. Anhand unseres Beispielcodes von oben möchte ich euch diese vorstellen.
Es gibt 3 bzw 4 elementare Optionen.
XML kann in den verschiedensten Programmiersprachen eingesetzt werden. Hier will ich euch einmal grob verschiedene Module, Klassen, Plugins für verschiedene Programmiersprachen auflisten.
Es gibt verschiedene Alternativen zu einen XML-Dokument, aber nicht alle Alternativen sind immer sinnvoll. Ein weitverbreitetes deutlich moderneres Format ist das sogenannte JSON, ausgeschrieben heißt das JavaScript Object Notation. Dieses Format ist ein JavaScript-Objekt.
Unser Haus vom ersten Beispiel könnte in JSON folgendermaßen aussehen:
{
"Haus":{
"Dach": "",
"Stockwerke": {"Ebene 1":"","Ebene 2":""},
"Erdgeschoss": "",
"Keller": {"Vorratskammer":""}
}
}
Der Vorteil einer JSON-Datei ist, dass damit oft einfacher zu arbeiten ist als mit XML. Neue Keys, die komplementär zu Tags in XML sind, sind deutlich einfacher neu zu ergänzen als XML, da nicht die DTD umgeschrieben werden muss. Es ist nur wichtig, dass ein Key einen Wert zugewiesen bekommt. Das darf auch ein NULL-Wert sein. Allerdings gibt es keine Typenvalidierung. Dies kann nur durch eine zusätzliche Instanz innerhalb des Parsing des JSON erfüllt werden, sodass "Dach" zum Beispiel nur Strings (Zeichenketten) enthalten darf.
Eine weitere Alternative zu XML ist CSV. Da kann ich euch meinen Artikel über CSV-Dateien mit PHP empfehlen. Im allgemeinen Teil gehe ich auf CSV-Dateien allgemein ein. Da CSV-Dateien nur Tabellen sind, ist es, verglichen mit JSON oder XML, deutlich schwieriger, in so einem Komplex ein Haus darzustellen.
Tabellen eignen sich in der Regel nur, wenn von Anfang an klar ist, welche Werte in welcher Form zu erwarten sind - ohne Abweichungen.
Artikel zum Thema "CSV Datein mit PHP Erstellen": CSV-Dateien ganz einfach mit PHP erstellen und lesen!
Als weitere Alternative gibt es noch YAML. YAML ist im Allgemeinen sehr ähnlich zu JSON. Ein großer Unterschied hierbei ist, dass YAML keine Klammern hat, ähnlich wie Python. So gibt es viele Menschen, die Python und YAML gerne in Kombination verwenden. Unsere XML-Datei vom Anfang als YAML könnte zum Beispiel folgendermaßen aussehen.
Haus:
Dach: ''
Stockwerke:
Ebene 1: ''
Ebene 2: ''
Erdgeschoss: ''
Keller:
Vorratskammer: ''
An dem YAML- und JSON-Beispiel kann man gut erkennen, dass es kürzere und ebenso gut, wenn nicht sogar besser lesebare Alternativen zu XML gibt. Oft kommt es allerdings vor, dass bestehende Software mit XML arbeitet und ein Wechsel auf eine modernere Alternative aus wirtschaftlichen Aspekten zu teuer ist. Daher sollte man als Entwickler XML lesen und verstehen können.
XML ist eine alte Sprache, die erste Veröffentlichung war 1998. Sie ist immer noch eine solide Sprache um Daten zu sammeln, wobei es inzwischen viele tolle Alternativen wie beispielsweise JSON und YAML gibt. Man sollte immer abwägen, welche Varianten zum Speichern der Daten für das entsprechende Anwendungsgebiet die richtige ist. Der Vorteil von XML liegt im Alter der Sprache, durch das es, zum Beispiel verglichen mit JSON, für deutlich mehr Sprachen einen Parser gibt.
Hinterlasse mir gerne einen Kommentar zum Artikel und wie er dir weitergeholfen hat beziehungsweise, was dir helfen würde das Thema besser zu verstehen. Oder hast du einen Fehler entdeckt, den ich korrigieren sollte? Schreibe mir auch dazu gerne ein Feedback!
Es sind noch keine Kommentare vorhanden? Sei der/die Erste und verfasse einen Kommentar zum Artikel "Was ist XML und Wofür brauch ich XML?"!