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#
| Vorteile | Nachteile |
|---|---|
| Sehr einfach & kompakt | Keine Hierarchien möglich |
| Von allen Tabellenkalkulationen lesbar | Kein Standard für Sonderzeichen/Encoding |
| Menschlich lesbar | Keine Datentypen (alles Text) |
| Ideal für tabellarische Daten | Trennzeichen 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#
| Typ | Beispiel | Beschreibung |
|---|---|---|
| String | "Hallo" | Text in doppelten Anführungszeichen |
| Number | 42, 3.14 | Ganze Zahlen oder Dezimalzahlen |
| Boolean | true, false | Wahrheitswert |
| null | null | Kein 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#
| Vorteile | Nachteile |
|---|---|
| Hierarchische Strukturen möglich | Keine Kommentare |
| Sehr kompakt | Kein Schema/Validierung (ohne JSON Schema) |
| Standard für REST-APIs | Lesbarkeit 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#
| Begriff | Beschreibung | Beispiel |
|---|---|---|
| Element | Tag mit Inhalt | <name>Max</name> |
| Attribut | Eigenschaft im öffnenden Tag | <person id="1"> |
| Wurzelelement | Oberstes Element (genau eines!) | <personen> |
| Kindknoten | Elemente innerhalb eines Elements | <vorname> in <person> |
| Prolog | XML-Deklaration am Anfang | <?xml version="1.0"?> |
| CDATA | Rohdaten-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:
<für<,>für>,&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#
| Vorteile | Nachteile |
|---|---|
| Validierung mit DTD/XSD möglich | Sehr verbose (viel Overhead) |
Kommentare erlaubt <!-- ... --> | Komplexer als JSON |
| Weit verbreitet (SOAP, Konfiguration) | Größere Dateien |
| Namespaces für Konfliktvermeidung | Parsing aufwendiger |
Typische Einsatzbereiche: SOAP-Webservices, Konfigurationsdateien (Maven, Spring), Office-Dokumente (docx, xlsx intern), RSS-Feeds, SVG.
Vergleich: XML vs. JSON vs. CSV#
| Kriterium | CSV | JSON | XML |
|---|---|---|---|
| Hierarchien | Nein | Ja | Ja |
| Lesbarkeit | Sehr gut | Gut | Mittel |
| Datenmenge | Kompakt | Kompakt | Ausführlich |
| Validierung | Nein | JSON Schema | DTD / XSD |
| Kommentare | Nein | Nein | Ja |
| Datentypen | Nein (alles Text) | Ja | Nein (alles Text) |
| Verbreitung APIs | Selten | Standard | SOAP/Legacy |
| Tabellarische Daten | Ideal | Möglich | Mö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,3200JSON:
[
{ "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#
- Wikipedia: JSON
- Wikipedia: XML
- Wikipedia: CSV
- Studyflix: JSON einfach erklärt
- SimpleClub: Datenformate XML JSON CSV auf YouTube suchen