XML vs. JSON

Vorlage_Titelbild_1024x460

Für viele Leute die im Bereich der Technischen Dokumentation arbeiten, ist XML fast schon wie eine zweite Muttersprache. Doch für einige ist XML immer noch nur ein Buzzword. Zusätzlich wird seit einigen Jahren nun auch öfters JSON als Alternative für XML erwähnt. Was diese beiden Formate sind, was sie auszeichnet und besonders was sie unterscheidet, erfahrt Ihr im folgenden Beitrag.

XML

XML steht für Extensible Mark-up Language und ist eine Auszeichnungssprache ähnlich wie HTML. XML dient für den Austausch komplexer Datenstrukturen und ist seit vielen Jahren im Bereich der Technischen Dokumentation weit verbreitet. So basieren beispielsweise Dokumentationen die mithilfe eines Redaktionssystems erstellt werden komplett auf XML.

Ein XML-Dokument kann aus folgenden Knoten bestehen:

Knotentyp Beispiel
Beginn- und End-Tag <Tag> … </Tag>
Attribute <Tag Attribut=“Wert“>…
Verarbeitungsanweisung <?Ziel-Name Parameter ?>
Kommentare <!– Kommentar –>
Text <![CDATA[ Hier steht einText]]>

Pro

  • Stark etabliert in der Technischen Dokumentation
  • XSLT für die Transformation in verschiedene Formate
  • XPath/XQuery für das Extrahieren von Informationen (tief verschachtelte Informationen sind leichter auszulesen als bei JSON)

Con

  • Je nachdem viele verschachtelte Tags und mehr Zeichenzahlen als JSON
  • XML-Dateien können je nach Umfang des Contents sehr große werden (100 MB +)
  • AJAX verarbeitet XML langsamer als JSON

JSON

JSON steht für JavaScript Object Notation und ist ebenfalls ein Datenaustauschformat. Es basiert auf JavaScript und wird fast immer in Verbindung mit AJAX genutzt. JSON wird also primär für Web-Anwendungen genutzt und überträgt Daten zwischen Server und Client.

JSON ist im Gegensatz zu XML wesentlich kompakter in der Zeichenanzahl und dadurch auch in der Dateigröße um einiges kleiner, was einer mobilen Applikation zuspielt. JSON eignet sich dadurch besonders dann als Ersatz von XML, wenn Applikationen erstellt werden, in denen Ressourcen sparsam genutzt werden sollen (vgl. Klippstein).

JSON verfügt über folgende Datentypen:

Datentyp Definition Beispiel
Nullwert Hat den Wert null

„Baugruppe“: null

Boolescher Wert Hat den Wert true oder false „freigegeben“: true,
Zahl Sind die Ziffern 0 – 9  „Anzahl“: 42
Zeichenkette Zeichenketten werden mit geraden doppelten Anführungszeichen begonnen und beendet.  „Name“: „MobDok“
Array Beginnt und endet mit eckigen Klammern [ ]. Werte im Array werden durch Kommata unterteilt.

„Beuteile“: [ „Bauteil 1“, „Bauteil 2“, „Bauteil 3“ ],

Objekt Beginnt und endet mit geschweifter Klammer { }. („Schlüssel“: Wert) Werte im Objekt werden durch Kommata unterteilt. „Hersteller“: {

}

Pro

  • Einfache, minimalistische Syntax
  • Geringes Datenvolumen
  • Eignet sich besser für AJAX-Applikationen
  • Unterstützung einer Vielzahl von Programmiersprachen

Con

  • Unhandlich für klassische Dokumente
  • Kein Equivalent für die <![CDATA]> und damit nicht sehr geeignet für multimediale Inhalte
  • Nicht geeignet für sehr große Daten

Beispiel

Im folgenden möchte ich euch anhand zwei expliziter Beispiele die Stärken und Schwächen der beiden Formate erläutern.

Klassische Dokumente

Das erste Beispiel zeigt die Stärken von XML, die besonders in der Technischen Dokumentation relevant sind. Das Beispiel ist zwar nur ein kleiner Auszug, visualisiert trotzdem gut den Grundgedanken. Für klassische Dokumente eignet sich XML deutlich besser als JSON. Das liegt wohl daran, dass XML eine Mark-up Language  ist, während JSON eine Object Notation. Um dasselbe mit JSON zu erreichen, müsste man den Text unnötig verschachteln und würde so ein schnell unverständliches Dokument erstellen.

XML:

<Dokument>
    <Paragraph Align="Center">
        Hier <Bold>steht</Bold> ein Text.
    </Paragraph>
</Dokument>

JSON:

{
    "Paragraph": [
        {
            "align": "center",
            "content": [
                "Hier ", {
                    "style" : "bold",
                    "content": [ "steht" ]
                },
                " ein Text."
            ]
        }
    ]
}

vgl. Stackoverflow

Verwaltung von Daten

Im zweiten Beispiel hat dagegen JSON die besseren Karten. Bei der Verwaltung von Daten wie zum Beispiel von Benutzerprofilen, Adressen, Datentabellen oder ähnlichem eignet sich JSON deutlich besser als XML. JSON vermeidet die mehrmalige Verwendung eines Knotens und fasst Daten geschickt in einer Liste zusammen (Beispiel „Verwandte“). In diesem Beispiel erzeugt man also nun mit XML ein unnötig kompliziertes Dokument, welches mit JSON eindeutig geschickter zu lösen wäre.

XML:

<Person>
    <Vorname>Homer</Vorname>
    <Nachname>Simpsons</Nachname>
    <Verwandte>
        <Verwandter>Grandpa</Verwandter>
        <Verwandter>Marge</Verwandter>
        <Verwandter>The Boy</Verwandter>
        <Verwandter>Lisa</Verwandter>
    </Verwandte>
</Person>

JSON:

{
    "Vorname": "Homer",
    "Nachname": "Simpson",
    "Verwandte": [ "Grandpa", "Marge", "The Boy", "Lisa"]
}

vgl. Stackoverflow

Fazit

Am Ende liegt die Entscheidung, welches Austauschformat man denn nun verwendet, schlussendlich bei Euch. Für beide Formate gibt es sinnvolle und berechtigte Einsatzszenarien. Ein wichtiger Schritt bei der Erstellung von mobilen oder Web-Anwendungen ist also zu definieren, welche Arten von Content darin vorkommen werden und anschließend zu überlegen bzw.  zu analysieren, welches Austauschformat sich für den Content besser eignen würde. Natürlich ist auch eine Kombination aus beiden Möglichkeiten denkbar: so hättet Ihr beispielsweise auf der einen Seite einen klassischen Text, den Ihr mit XML umsetzen würdet, während Ihr auf der anderen Seite umfangreiche Technische Daten oder eine Ersatzteilliste hättet, die Ihr mit JSON realisieren würdet. So könnt Ihr das volle Potential der Formate ausnutzen.

Quelle: DoubleSlash | Klippstein | stackoverflow

Schreibe einen Kommentar

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