NDJSON in XML umwandeln

NDJSON kannst du hier kostenlos und ohne Konto in XML umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.

  • Wo es läuft In deinem Browser. Die Datei wird nicht hochgeladen.
  • Verlustfrei Es geht nichts verloren. XML enthält genau das, was auch NDJSON enthielt.
  • Größenbegrenzung Bis 100 MB pro Datei, kostenlos und ohne Konto.

Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.

Eine Schnittstelle, die noch heute XML erwartet

Deutsche Behörden tauschen Daten häufig über die XÖV-Familie standardisierter XML-Formate aus — etwa für das Meldewesen oder die Justiz —, und ein zeilenweiser Export aus einem modernen System muss vor der Übergabe erst in genau diese Form gebracht werden. Diese Umwandlung erledigt den ersten, mechanischen Teil davon: aus jeder Zeile wird ein Element in einem einzigen Dokument.

Was danach noch bleibt, ist meist eine Frage der Feinabstimmung — der richtige Elementname, ein Namensraum, die Reihenfolge, die ein Schema verlangt. Diese Seite erklärt, was die Umwandlung selbst liefert und was jemand von Hand nachtragen muss, bevor die Datei tatsächlich zur Schnittstelle passt.

Aus unabhängigen Zeilen wird ein einziges, unteilbares Dokument

Die beiden Formate stehen an entgegengesetzten Enden derselben Frage. NDJSON ist so gebaut, dass keine Zeile von einer anderen abhängt — man kann die Datei an beliebiger Stelle teilen, nach einem Abbruch fortsetzen, verarbeiten, ohne sie ganz zu halten. Ein XML-Dokument ist das Gegenteil: Es ist erst gültig, wenn das schließende Wurzelelement da ist, also ist die ganze Datei von der ersten bis zur letzten Zeile eine Einheit.

Genau darauf sollte man sich einstellen, nicht auf die Elementnamen. Ein Export eines großen Bestands ergibt ein einzelnes Dokument, das als Ganzes übertragen, geparst und angenommen werden muss — ein Fehler an irgendeiner Stelle scheitert am gesamten Dokument. Wo die Gegenstelle eine Nachrichtengrößengrenze oder eine Wiederholungslogik hat, macht das Teilen der Quelldatei in Stapel vor der Umwandlung den Unterschied zwischen einer Zustellung, die nach einem Fehler weitermacht, und einer, die von vorn beginnt.

Jede Zeile wird zu einem item-Element in einem root

Die Form ist festgelegt, weil die Eingabeform es ist. Eine zeilenweise Datei ist immer eine Liste, und eine Liste hat keinen eigenen Namen — deshalb entsteht ein Wurzelelement mit einem item-Element pro Datensatz darunter. Jedes Feld wird zu einem Kindelement, benannt nach seinem Schlüssel, und ein verschachteltes Objekt ergibt darunter weitere Elemente.

Es gibt keine Option, diese beiden Namen während der Umwandlung selbst festzulegen, und es gäbe für den Konverter auch keinen sinnvollen Weg, sie zu erraten — nichts in einer NDJSON-Datei sagt, ob die Datensätze Bestellungen, Meldungen oder Messwerte sind. Die Ausgabe ist bewusst das schlichteste korrekte Dokument, was die anschließende Umbenennung zu einer vorhersehbaren Suchen-und-Ersetzen-Aufgabe macht statt zu einer Entwirrung.

root und item umbenennen ist fast immer der erste Handgriff

So gut wie jede XML-Schnittstelle benennt ihr Datensatzelement in einem eigenen Schema — ein Meldungen-Dokument mit Meldung-Elementen, ein Vorgänge-Dokument mit Vorgang-Elementen. Die beiden generischen Namen sind also Platzhalter, und sie zu ersetzen ist eine Sache von zwei Minuten in einem Editor: einmal root an beiden Enden, item an jeder Datensatzgrenze.

Das lohnt sich vor der ersten Zustellung, nicht erst nach einer Ablehnung. Ein Intake, das gegen ein Schema prüft, weist das ganze Dokument wegen des Elementnamens zurück und meldet das häufig nicht besonders deutlich. Bei regelmäßigen Lieferungen gehört diese Umbenennung ins Skript, das die Datei verschickt, nicht in die Erinnerung einer einzelnen Person.

Listen innerhalb eines Datensatzes sind der Fall, den XML gut kann

Eine Liste in XML war schon immer dasselbe Tag mehrfach hintereinander, deshalb ergibt ein Datensatz mit drei tags-Werten drei nebeneinanderstehende tags-Elemente. Keine Nummerierung, keine Verkettung, keine Entscheidung, die die Umwandlung für einen trifft — die Struktur kommt vollständig an.

Das ist der stärkste Grund, für dieselbe Datei XML den tabellarischen Zielen vorzuziehen. Eine Umwandlung derselben Datensätze in CSV zwingt zu einer Wahl zwischen nummerierten Spalten, einer zusammengefügten Zeichenkette oder zusätzlichen Zeilen, und jede dieser Lösungen verliert etwas. Eine Bestellung mit fünf Positionen oder ein Ereignis mit einer Liste angewendeter Regeln kommt in XML ohne einen einzigen Kompromiss an.

Elementnamen werden umgeschrieben, wo JSON-Schlüssel unzulässig sind

JSON-Schlüssel dürfen fast alles sein — Leerzeichen, Schrägstriche, eine führende Ziffer. XML-Elementnamen dürfen das nicht. Der Schreiber scheitert daran nicht, sondern schreibt um: verbotene Zeichen werden zu Unterstrichen, und ein mit einer Ziffer beginnender Name bekommt einen Unterstrich davor.

Maschinell erzeugte Exporte treffen das häufiger als von Hand geschriebene Dateien. Alles, was nach einem Datum, einer Kennzahl oder einem Kopfzeilenfeld benannt ist, erzeugt eher umgeschriebene Namen, und das Umschreiben geschieht ohne Meldung. Hat die Gegenstelle ein Schema, scheitern diese Elemente an einem Namen, den niemand wiedererkennt — es lohnt sich, die Ausgabe vor der ersten Lieferung auf Unterstriche zu durchsuchen.

Datensätze mit unterschiedlichen Feldern ergeben unterschiedlich geformte Elemente

Der Abgleich, den die tabellarischen Umwandlungen vornehmen, findet hier nicht statt und wird auch nicht gebraucht. Jedes item-Element trägt genau die Felder, die seine Zeile hatte — eine Datei mit gemischten Ereignistypen ergibt also item-Elemente unterschiedlicher Form innerhalb desselben Dokuments, was gültiges XML, aber gegen ein striktes Schema meist ungültig ist.

Ein Schema mit einer festen Elementfolge weist den ersten Datensatz zurück, dem ein Element fehlt. In diesem Fall entweder die Quelle vor der Umwandlung auf einen Datensatztyp filtern oder die fehlenden Elemente leer ergänzen — wobei ein leeres Element und ein als nillable deklariertes Element für einen strengen Validator zwei verschiedene Dinge sind. Welche der beiden Formen die Gegenstelle erwartet, steht in deren Dokumentation und ist besser einmal geklärt als nach jedem zweiten Ablehnungslauf neu erraten.

Sonderzeichen, Nullwerte und Text ohne lateinische Buchstaben

Kaufmännisches Und, spitze Klammern und doppelte Anführungszeichen in einem Wert werden maskiert, damit eine Produktbeschreibung oder eine Protokollzeile mit zufälligem Markup das Dokument nicht vorzeitig beendet. Alles Übrige, einschließlich Umlauten und nicht-lateinischer Schrift, wird als UTF-8 durchgereicht.

Ein JSON-Nullwert wird zu einem leeren Element: Das Tag ist vorhanden, dazwischen steht nichts. Manche Schemata verlangen dafür xsi:nil, andere erwarten das Element gar nicht erst — unterscheidet die Gegenstelle diese Fälle, ist das eine nachgelagerte, skriptgesteuerte Anpassung der Ausgabe, weil die Quelle nur eine einzige Art kennt, „nichts" auszudrücken.

Das Dokument ist größer als der Export, aus dem es entstand

Jeder Feldname erscheint zweimal pro Datensatz — einmal im öffnenden, einmal im schließenden Tag —, wo NDJSON ihn einmal schreibt. Zusammen mit der Einrückung landet ein Dokument aus kurzen Werten und langen Feldnamen leicht bei der zwei- bis dreifachen Größe der Ursprungsdatei.

Bei einer SFTP-Übergabe spielt das keine Rolle. Bei einer Nachrichtenwarteschlange mit Größenlimit entscheidet es, wie viele Datensätze pro Stapel passen. Die übliche Antwort ist Kompression statt Umbau: XML dieser Art wiederholt sich stark und lässt sich sehr gut komprimieren, und die meisten größenbegrenzten Schnittstellen akzeptieren eine komprimierte Übergabe.

Mehrere Lieferungen in einem Durchgang vorbereiten

Bis zu hundert Dateien lassen sich gleichzeitig ablegen, jede wird zu einem eigenen XML-Dokument. Bei regelmäßigen Lieferungen an dieselbe Schnittstelle — etwa ein täglicher Export, der in mehrere Stapel geteilt wurde, weil die Gegenstelle eine Größengrenze setzt — lässt sich so die ganze Serie in einem Arbeitsschritt umwandeln.

Weil keine Serverkapazität verbraucht wird, gibt es keine Warteschlange dazwischen; die praktische Grenze ist der Arbeitsspeicher des eigenen Geräts, und bei mehreren großen Dokumenten gleichzeitig macht sich das eher bemerkbar als bei einer einzelnen Datei.

Der Export bleibt lokal, während er zu XML wird

Die Umwandlung läuft im Browser-Tab: Die Datei wird zeilenweise gelesen, das Dokument von einem kleinen Schreibmodul in der Seite zusammengesetzt. Nichts wird hochgeladen, es gibt kein Konto und keine Warteschlange, und die freie Grenze liegt bei 100 MB — der eigentliche Deckel ist der Arbeitsspeicher des Geräts, weil das Dokument als Ganzes im Speicher entsteht.

Die Daten, die auf diesem Weg unterwegs sind, sind selten belanglos. Lieferungen an eine Behörde, eine Bank oder einen Vertragspartner sind genau die Dateien mit einer Vertraulichkeitsklausel, und eine Umwandlung über einen unbekannten Webdienst wäre eine zweite Offenlegung, der niemand zugestimmt hat. Hier gibt es nichts offenzulegen — der Netzwerk-Tab während einer Umwandlung zeigt das unmittelbar.

NDJSON in XML umwandeln — so geht es

  1. Leg deine NDJSON-Datei auf dieser Seite ab, oder klick, um eine auszuwählen.
  2. Wähl XML als Ziel. Die Umwandlung läuft in deinem Browser, die Datei wird nicht hochgeladen.
  3. Lade die fertige XML-Datei herunter.

NDJSON und XML im Vergleich: was sich ändert

NDJSON im Vergleich zu XML
NDJSONXML
Vollständiger NameNewline-Delimited JSONExtensible Markup Language
Dateiendung.ndjson, .jsonl.xml
Medientypapplication/x-ndjsonapplication/xml
Erstmals veröffentlicht20131998
Herausgegeben vonW3C
SpezifikationXML 1.0
LizenzlageOffener StandardOffener Standard
Heutiger StandAktuellAktuell
Öffnet im BrowserKein BrowserJeder Browser
Stattdessen erwogenJSON, CSVJSON, YAML

Was erhalten bleibt

Es geht nichts verloren. NDJSON und XML speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Das Ergebnis öffnen

XML öffnet sich in jedem aktuellen Browser. NDJSON unterstützen noch weniger Browser. Wenn die Datei auf eine Webseite oder in ein Formular soll, ist das meist der ganze Grund für die Umwandlung.

Die üblichen Programme überschneiden sich nicht: NDJSON öffnest du in jq und pandas, XML in Visual Studio Code und oXygen XML Editor — wer das Ergebnis bekommt, braucht also eines aus der zweiten Reihe.

Wofür die beiden Formate gedacht sind

XML kommt von W3C und stammt aus 1998, festgehalten in XML 1.0. Visual Studio Code und oXygen XML Editor lesen das Format.

XML wurde 1998 veröffentlicht, NDJSON 2013. Das ältere ist in der Regel die sicherere Datei zum Weitergeben, das jüngere erledigt dieselbe Aufgabe mit weniger Bytes.

NDJSON zu XML: häufige Fragen

Werden meine NDJSON-Dateien irgendwo hochgeladen?

Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.

Ist das Umwandeln von NDJSON in XML kostenlos?

Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.

Geht beim Umwandeln von NDJSON in XML Qualität verloren?

Nein. XML speichert denselben Inhalt, ohne etwas wegzuwerfen — das Ergebnis ist qualitativ mit dem Original identisch.

Ist NDJSON zu XML verlustfrei?

Es geht nichts verloren. NDJSON und XML speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Mehr über diese Formate