Datenformate: XML, JSON, CSV#

Strukturierte Datenformate dienen dem Austausch und der Speicherung von Daten zwischen Anwendungen, Systemen und Schnittstellen (APIs).


CSV – Comma-Separated Values#

Das einfachste der drei Formate. Daten werden als Tabelle in Textform gespeichert – Felder durch Trennzeichen getrennt.

Aufbau#

Vorname,Nachname,Alter,Stadt
Max,Mustermann,25,Berlin
Anna,Schmidt,32,München
Tom,Meier,19,Hamburg
  • Erste Zeile: oft die Spaltenüberschriften (Header)
  • Trennzeichen: Komma , (standard), Semikolon ; (Deutschland, da Komma Dezimalzeichen), Tab \t
  • Zeilenende: Neue Zeile = neuer Datensatz
  • Anführungszeichen: Felder mit Komma oder Zeilenumbruch werden in "..." eingeschlossen

Eigenschaften#

VorteileNachteile
Sehr einfach & kompaktKeine Hierarchien möglich
Von allen Tabellenkalkulationen lesbarKein Standard für Sonderzeichen/Encoding
Menschlich lesbarKeine Datentypen (alles Text)
Ideal für tabellarische DatenTrennzeichen im Dateninhalt problematisch

Typische Einsatzbereiche: Datenbankexporte, Tabellenkalkulationen, einfache Datenübertragung, Log-Dateien.


JSON – JavaScript Object Notation#

Leichtgewichtiges, menschenlesbares Format für strukturierte Daten mit Hierarchien. Heute Standard für Web-APIs (REST).

Aufbau & Syntax#

{
  "person": {
    "vorname": "Max",
    "nachname": "Mustermann",
    "alter": 25,
    "aktiv": true,
    "adresse": {
      "stadt": "Berlin",
      "plz": "10115"
    },
    "hobbys": ["Programmieren", "Lesen", "Sport"]
  }
}

JSON-Datentypen#

TypBeispielBeschreibung
String"Hallo"Text in doppelten Anführungszeichen
Number42, 3.14Ganze Zahlen oder Dezimalzahlen
Booleantrue, falseWahrheitswert
nullnullKein Wert / leer
Object{ "key": "value" }Schlüssel-Wert-Paare in {}
Array[1, 2, 3]Liste von Werten in []

Syntax-Regeln#

  • Schlüssel immer in doppelten Anführungszeichen "schlüssel"
  • Kein trailing comma (kein Komma nach dem letzten Element)
  • Keine Kommentare in JSON erlaubt

Eigenschaften#

VorteileNachteile
Hierarchische Strukturen möglichKeine Kommentare
Sehr kompaktKein Schema/Validierung (ohne JSON Schema)
Standard für REST-APIsLesbarkeit bei großen Daten eingeschränkt
Direkt in JavaScript nutzbar

Typische Einsatzbereiche: REST-APIs, Konfigurationsdateien, Webanwendungen, NoSQL-Datenbanken.


XML – eXtensible Markup Language#

Flexibles, hierarchisches Format mit benutzerdefinierten Tags. Etwas ausführlicher als JSON, dafür mit strengerer Struktur und Validierungsmöglichkeiten.

Aufbau & Syntax#

<?xml version="1.0" encoding="UTF-8"?>
<personen>
  <person id="1">
    <vorname>Max</vorname>
    <nachname>Mustermann</nachname>
    <alter>25</alter>
    <adresse>
      <stadt>Berlin</stadt>
      <plz>10115</plz>
    </adresse>
    <hobbys>
      <hobby>Programmieren</hobby>
      <hobby>Lesen</hobby>
    </hobbys>
  </person>
</personen>

XML-Begriffe#

BegriffBeschreibungBeispiel
ElementTag mit Inhalt<name>Max</name>
AttributEigenschaft im öffnenden Tag<person id="1">
WurzelelementOberstes Element (genau eines!)<personen>
KindknotenElemente innerhalb eines Elements<vorname> in <person>
PrologXML-Deklaration am Anfang<?xml version="1.0"?>
CDATARohdaten-Abschnitt (kein Parsing)<![CDATA[<b>kein HTML</b>]]>

Syntax-Regeln#

  • Jedes öffnende Tag muss ein schließendes Tag haben: <tag>...</tag>
  • Leere Elemente: <tag/> (Kurzform)
  • Tags sind case-sensitive: <Name><name>
  • Attribute in doppelten Anführungszeichen
  • Nur ein Wurzelelement pro Dokument
  • Sonderzeichen escapen: &lt; für <, &gt; für >, &amp; für &

Validierung mit DTD / XML Schema#

<!-- Mit DTD validieren -->
<!DOCTYPE personen SYSTEM "personen.dtd">

<!-- Mit XML Schema (XSD) validieren -->
<personen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="personen.xsd">

Eigenschaften#

VorteileNachteile
Validierung mit DTD/XSD möglichSehr verbose (viel Overhead)
Kommentare erlaubt <!-- ... -->Komplexer als JSON
Weit verbreitet (SOAP, Konfiguration)Größere Dateien
Namespaces für KonfliktvermeidungParsing aufwendiger

Typische Einsatzbereiche: SOAP-Webservices, Konfigurationsdateien (Maven, Spring), Office-Dokumente (docx, xlsx intern), RSS-Feeds, SVG.


Vergleich: XML vs. JSON vs. CSV#

KriteriumCSVJSONXML
HierarchienNeinJaJa
LesbarkeitSehr gutGutMittel
DatenmengeKompaktKompaktAusführlich
ValidierungNeinJSON SchemaDTD / XSD
KommentareNeinNeinJa
DatentypenNein (alles Text)JaNein (alles Text)
Verbreitung APIsSeltenStandardSOAP/Legacy
Tabellarische DatenIdealMöglichMöglich

Dasselbe Beispiel in allen drei Formaten#

Aufgabe: Zwei Mitarbeiter mit Name, Abteilung und Gehalt darstellen.

CSV:

Name,Abteilung,Gehalt
Max Mustermann,IT,3500
Anna Schmidt,Vertrieb,3200

JSON:

[
  { "name": "Max Mustermann", "abteilung": "IT", "gehalt": 3500 },
  { "name": "Anna Schmidt", "abteilung": "Vertrieb", "gehalt": 3200 }
]

XML:

<?xml version="1.0" encoding="UTF-8"?>
<mitarbeiter>
  <person>
    <name>Max Mustermann</name>
    <abteilung>IT</abteilung>
    <gehalt>3500</gehalt>
  </person>
  <person>
    <name>Anna Schmidt</name>
    <abteilung>Vertrieb</abteilung>
    <gehalt>3200</gehalt>
  </person>
</mitarbeiter>

Prüfungsbeispiele#

„Welches Datenformat eignet sich am besten für den Export einer Kundenliste aus einer Datenbank in eine Tabellenkalkulation?"

CSV – einfach, tabellarisch, direkt von Excel/Calc importierbar.

„Eine REST-API soll Produktdaten übertragen. Welches Format ist heute Standard?"

JSON – kompakt, hierarchisch, direkt in Webanwendungen nutzbar.

„Was ist der Unterschied zwischen einem XML-Attribut und einem XML-Element?"

Attribut: steht im öffnenden Tag, z.B. <person id="1"> – kurze Metainformation. Element: hat eigenen öffnenden und schließenden Tag mit Inhalt, z.B. <name>Max</name> – für eigentliche Datenwerte.

„Welches der drei Formate unterstützt Kommentare?"

→ Nur XML unterstützt Kommentare (<!-- Kommentar -->). CSV und JSON haben keine Kommentarfunktion.


Siehe auch#

  • softwaredokumentation — API-Dokumentation mit Swagger/OpenAPI nutzt JSON/YAML
  • [[../08_datenbanken/sql]] — SQL-Ergebnisse werden häufig als CSV oder JSON exportiert
  • [[../08_datenbanken/erm]] — Datenbankstrukturen, die per Schnittstelle als JSON/XML übertragen werden
  • [[../02_netzwerk/protokolle-ports]] — HTTP/REST als Transportprotokoll für JSON-APIs

Ressourcen#