Brauchst Du eine Einführung für das XML-Format?
Dieser Guide zeigt die praxisnahe Beispiele und Verwendung.
Starten wir!
Was ist XML?
Die Extensible Markup Language (XML) ist ein Datei-Format auf dem bekannte andere Formate wie HTML, RSS und SVG aufbauen. Die Auszeichnungssprache bietet eine allgemeine Grundnotation, die mit einer präziseren Spezifikation (DTD) erweitert werden kann. Sie erlaubt ein standardisiertes Austauschen von Nachrichten über APIs oder das Web.
Datenbanken wie Apache Xindice arbeiten mit dem Extensible Markup Language (XML) Format, welche die NoSQL-Datenbanken CouchDB oder MongoDB in den letzten Jahren durch JSON ersetzt haben.
XML Anwendung und wichtige Formate
XML ist popular und
- Jede Webseite in Form einer Hypertext Markup Language (HTML)
- Alte Schnittstellen-Definition über Simple Object Access Protocol (SOAP)
- Sitemaps für Crawler (Sitemap.xml)
- Skalierbare Grafiken ohne Pixelmatsch Scalable Vector Graphics (SVG)
- Für die sichere Authentifizierung über SAML mit Single-Sign-On-Anwendung (SSO)
- XML-Datenbanken zur strukturierten Speicherung von Dokumenten
Was sind Document Type Definitions (DTD)?
Eine Document Type Definition (DTD) beschreibt eine XML genauer und gibt z. B. Angaben, welche Tags erlaubt sind und welche nicht. Die DTD definiert alle Tags und Attribute je Tag, die zugelassen sind und welche Bestandteile Pflicht sind, damit die gegebene XML auf die DTD passt.
Der DTD ist ein Regelwerk bzw. eine Vorlage, wie XML-Dokumente, die sich auf die DTD beziehen aussehen zu haben.
Der XML-Parser ist ein Programm, welches die Korrektheit des XML-Dokuments überprüft. Der Parser unterscheidet zwischen einem wohlgeformten und einem validen XML:
XML Wohlgeformtheit – Syntax pur
Der Parser erkennt ein gültiges XML, welche die Grundregeln von XML einhält:
- Jeder geöffnete Tag schließt ein anderer Tag
- Die Verschachtlung hält sich an die korrekte Abfolge
- Die Attribute sind mit einem Leerzeichen getrennt
Die Prüfung auf Wohlgeformtheit ist allgemein und unspezifisch.
Steffen Lippke
XML Validierung – Vorlagenüberprüfung
Der XML-Parser überprüft nach der Wohlgeformtheit, ob das Dokument valide ist. Dazu braucht der Parser die Document Type Definition (DTD), um Abweichungen zu der XML zu erkennen. Die Datei entspricht alle Anforderungen der Document Type Definition.
Das Dokument passt auf das Template.
Der Parser akzeptiert die XML nur, wenn
- Der Programmiere keine weiteren Tags erfunden hat.
- Die notwendigen Attribute gesetzt sind
- Die Grundstruktur und Verschachtlung korrekt sind
Anfänger Tutorial XML
Wie kann ich XML öffnen?
Jeder Windows Rechner hat das Programm Notepad installiert. Diese kann XML anzeigen. Alternativ kannst Du ein Integrated Development Environment (IDE) verwenden z. B. Visual Studio Code.
Wie kann ich eine XML erstellen?
Tag immer schließen und öffnen
<tag> </tag>
Attribute beschreiben Tags näher
<tag attribut=“attributInhalt“> </tag>
<tag attribut=“attributInhalt“ id=“testID“> </tag>
Inhalte sind in Text oder Multimedia-Form kodiert (HTML):
<p>Das ist eine Paragraph<p>
<img src=“meinBild.png“ > </img>
Für inhaltslose Tags kann der Programmier die Kurzschreibewise verwenden. Die Attritubte beschreiben das Objekt ausreichend:
<img src=“meinBild.png“ >
Einfache Verschaltung:
Je größer das Dokument wird, desto besser solltest Du auf die Einrückung achten, um die Lesbarkeit zu erhöhen.
X-Path – Zugriff auf Element(e)
XML besitzt seine „API“, um auf die einzelnen Elemente in dem Dokument zugreifen zu können. Das Document Object Model (DOM) stellt XML als einen Baum dar, welchen der Programmierer adressieren kann.
Der Programmierer referenziert über X-Path XML Elemente wie String, Zahlen und Arrays.
-
HTML/head
gibt den Knoten mit dem Head zurück -
//h2
gibt alle Zwischenüberschriften des Typs 2 zurück -
//ul/li[1]
gibt jeweils den ersten Listeneintag aus jeder Liste auf der Webseite zurück //a/@href
gibt alle URLs zurück, die in einem Anker (Link) stehen.//*[@id="meienID"]
selektiere alle Objekte mit der ID „meineID“
Du kannst die X-Path-Befehle mit dem X-Path Tool von Qutoric austesten. Das Tool zeigt Dir die zu referenzierende XML und die Ergebnisse Deiner Abfragen an. Gehe Knoten für Knoten vor, um Fehler zu vermeiden.
Wann ist XML eine gute Wahl?
XML ist schon etwas in die Jahre gekommen. Trotzdem bleibt XML die Grundlage für HTML und andere Kommunikationsverfahren (SAML).
JSON dominiert Schnittstellenkommunikation, die früher über SOAP auf Basis von XML lief.
YAML dominiert die Konfigurationsdateien(sprachen), die XML nutzt.
XML automatisch auslesen + auswerten
Ein Crawler nutzt die wiederkehrenden XML-Strukturen einer Webseite aus, um gezielt Daten zu extrahieren.
Steffen Lippke
Ein Versandhändler präsentiert die Produkte immer in einem gleichen Raster (HTML-Schema) auf seiner Webseite. Der Crawler kann mit einem X-Path-Ausdruck z. B. alle Preise und Produktbezeichnungen mit einem Verarbeitungsschritt extrahieren.
Der Crawler kann systematisch die Seiten besuchen und die Inhalte in eine Datenbank sortiert sichern. Aus der Datenbank kannst Du ablesen, wann z. B. Der Versandhändler seine Preise senkt (Historie von Preisen über einen Monat).
Wie setzen Hacker XML ein?
Die XML-Bomben missbrauchen ein Feature der XML.
Die XML erlaubt das Definieren von Entitäten. Ein Parser fügt die Variablen dort ein, wo der Parser den Verweis im Dokument findet. Das geparste Gesamtergebnis wächst schnell zu einer riesigen Dateigröße an, wenn der Hacker die Entitäten verschachtelt.
<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol "lol">
<!ELEMENT lolz (#PCDATA)>
<!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>
Hacker entwickeln XML-Bomben, um einen Web-Server außer Gefecht zu setzen, der versucht das Dokument zu verarbeiten. Der Server besitzt nicht genügend Arbeitsspeicher oder das Parsen verschlingt zu für Rechenleistung, sodass der Server andere Kunden nicht mehr bedienen kann.
Manche Parser stoppen eine solche Ausführung nach X-Sekunden oder unterbinden die Verwendung von Entitäten. Die moderne Web-Programmierung nutzt Entitäten nicht mehr.
Was sind XML Alternativen?
- JavaScript Object Notaiton (JSON) ist das Standard-Kommunikationsformat für viele Anwendungsschnittstellen. Diese Notation ist für Menschen leicht lesbar und vermeidet den schließenden Tag, der den Overhead erhöht.
{
"firstName": "John",
"lastName" : "Müller",
"age" : 28,
"address" : {
"streetAddress": "Best Street",
"city" : "MainUnterHausen",
"postalCode" : "23234"
}
}
- Das YAML-Format bietet eine gute menschenfreundliche Lesbarkeit bei minimaler Syntax. Viele Entwickler nutzten diese Auszeichnungsprache, um eine Konfigurationsdatei zu erstellen.
# Employee records
- horst:
name: Horst Manger
job: JavaDeveloper
skills:
- java
- html
- c
- TOML (Tom’s Obvious, Minimal Language) ist ein sehr minimalistisches Format, welches „intuitiv“ verständlich sein soll. Das Format gliedert sich in Blöcken durch „eine Art von Zwischenüberschrift“.
[user]
name = "Steffen"
lastname = "Lippke"
[database]
server = "192.168.122.122"
ports = [ 8023, 8002 ]
connection_max = 12342
enabled = false