Diese Webseite nutzt nur technisch notwendige Cookies.

XML Format Erklärung mit Tutorial Öffnen, Erstellen + X-Path

XML Format

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.

XML Format
XML Format

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.

XML Format
XML Format in Notepad

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.

XML Format
XML Format in Xpath

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
Lass uns wissen, was du denkst! War dieses Tutorial /Beitrag hilfreich, oder hast du noch brennende Fragen? Schreibe einen Kommentar und werde Teil unserer wachsenden Community. Teile Deine Erfolge, Herausforderungen und Tipps – gemeinsam schaffen wir Großes im Bereich Security und Coding!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

get rss abo

Jetzt
Abbonnieren
academy

Erhalte Free
Security Kurs

Jeden Monat teile ich mit Mitgliedern
4 neue praxisnahe Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!