NDJSON naar XML omzetten

Hier zet je NDJSON naar XML om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Zonder verlies Er gaat niets weg. XML bewaart precies wat NDJSON bewaarde.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.

Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.

Een bestand van losse regels wordt één ondeelbaar document

De twee formaten staan aan tegenovergestelde uiteinden van dezelfde vraag. NDJSON is ontworpen zodat geen regel van een andere afhangt: je kunt overal splitsen, hervatten na een fout, en verwerken zonder alles vast te houden. Een XML-document is het andere uiterste — het is pas geldig als de sluitende root-tag arriveert, dus het geheel is één eenheid van eerste tot laatste byte.

Dat is de eigenschap om rekening mee te houden, niet de elementnamen. Een omzetting van een grote export produceert één document dat als geheel verzonden, ontleed en geaccepteerd moet worden, en een fout waar dan ook faalt alles. Heeft het ontvangende systeem een berichtgroottelimiet, splits de bron dan eerst in batches.

Elke regel wordt een item-element binnen een root

De vorm ligt vast omdat de invoervorm vastligt. Een regelgescheiden bestand is altijd een lijst, en een lijst heeft geen eigen naam, dus het document is een root-element met één item-element per record. Elk veld wordt een kindelement genoemd naar zijn sleutel, en een genest object wordt geneste elementen eronder.

Er is geen optie om die twee namen tijdens de omzetting te wijzigen, en er is geen zinnige manier voor de omzetter om ze te raden — niets in een NDJSON-bestand zegt of de records bestellingen, claims of metingen zijn. De uitvoer is bewust het eenvoudigst correcte document.

Root en item hernoemen is de eerste bewerking, altijd

Vrijwel elke XML-ontvangst noemt zijn recordelement in een schema: een Orders-document met Order-elementen, een Batch met Transactions. De twee generieke namen zijn dus tijdelijke aanduidingen, en ze vervangen is een klus van twee regels in elke editor.

Dat doen voor de eerste levering in plaats van na een afwijzing is de twee minuten waard. Een ontvangst die tegen een schema valideert, wijst het hele document af op de elementnaam, en meldt dat vaak niet duidelijk.

Arrays binnen een record zijn het geval dat XML het beste aankan

Een lijst in XML is altijd dezelfde tag meerdere keren geschreven, dus een record met drie tags levert drie tags-elementen naast elkaar op. Geen nummering, geen samenvoeging, geen beslissing namens jou — de structuur komt intact aan.

Dat is het sterkste argument voor XML boven de tabeldoelen voor hetzelfde bestand. Deze records naar CSV omzetten dwingt een keuze tussen genummerde kolommen, een samengevoegde string en extra rijen, en elk daarvan verliest iets.

Elementnamen worden herschreven waar JSON-sleutels niet geldig zijn

JSON-sleutels kunnen van alles zijn: spaties, schuine strepen, een leidend cijfer, een valutateken. XML-elementnamen niet. De schrijver herschrijft in plaats van te falen — tekens die XML verbiedt worden underscores en een naam die met een cijfer begint krijgt er één voor.

Machinaal gegenereerde exports lopen hier vaker tegenaan dan met de hand geschreven exports. Alles gesleuteld op een datum, een metriekennaam of een klantreferentie levert herschreven namen op, en die herschrijving is stil. Heeft de ontvangst een schema, dan falen die elementen validatie op een naam die je niet herkent.

Records met verschillende velden leveren documenten met verschillende elementen op

De verzoening die de tabelomzettingen uitvoeren, gebeurt hier niet, en hoeft ook niet. Elk item-element draagt precies de velden die zijn regel had, dus een gemengd gebeurtenissenbestand levert item-elementen van verschillende vormen op binnen één document — geldige XML, meestal ongeldig tegen een schema.

Een schema dat een vaste volgorde kindelementen declareert, wijst het eerste record af dat er een mist. Filter dan de bron eerst tot één recordtype, of voeg de ontbrekende elementen leeg toe.

Escapen, null-waarden en niet-ASCII-tekst

Ampersands, punthaken en dubbele aanhalingstekens in een waarde worden ontsnapt, wat voorkomt dat een productomschrijving met opmaak erin het document voortijdig beëindigt. Al het andere, inclusief tekst met accenten, wordt als UTF-8 doorgeschreven.

Een JSON null wordt een leeg element: de tag staat er zonder iets ertussen. Sommige schema’s willen daar xsi:nil voor, sommige willen het element helemaal afwezig. Onderscheidt de ontvangst die, dan is dat een scriptmatige bewerking op de uitvoer.

Het document is groter dan de export waar het vandaan komt

Elke veldnaam verschijnt tweemaal per record — eenmaal in de openingstag en eenmaal in de sluitingstag — waar NDJSON hem eenmaal schrijft. Tel de inspringing erbij op, en een document van kleine waarden met lange veldnamen komt uit op twee tot drie keer de grootte van het bronbestand.

Op een SFTP-overdracht is dat irrelevant. Op een berichtenwachtrij met een groottelimiet bepaalt het hoeveel records in een batch passen. Het antwoord is bijna altijd compressie in plaats van herstructurering — dit soort XML comprimeert uitstekend met gzip.

Valideer, dan batchen, dan automatiseren

Welgevormdheid eerst — elke XML-editor of commandoregel-parser bevestigt in een seconde of het document ontleedbaar is, wat altijd zou moeten kloppen. Schemavalidatie daarna, en verwacht dat de eerste poging faalt op de elementnamen, een ontbrekende naamruimtedeclaratie, of elementvolgorde.

Slaagt één document, dan staat de vorm van het werk vast: splits de bron in batches van de grootte die de ontvangst accepteert, zet elk om, pas dezelfde hernoemingen toe. Het eerste met de hand doen en de validatoruitvoer zorgvuldig lezen, maakt de rest mechanisch.

De export blijft lokaal terwijl hij XML wordt

De omzetting draait in dit browsertabblad: het bestand wordt regel voor regel ontleed en het document wordt door een kleine schrijver in de pagina geschreven. Niets wordt geüpload, er is geen account of wachtrij, en het gratis niveau accepteert tot 100 MB.

De data die deze route neemt, is zelden onbelangrijk. Leveringen aan toezichthouders, banken, verzekeraars en partnersystemen zijn precies de bestanden met een vertrouwelijkheidsclausule eraan vast, en de omzetting door een onbekende webdienst laten lopen zou een tweede openbaarmaking zijn die niemand overeenkwam.

Zo zet je NDJSON naar XML om

  1. Sleep je NDJSON-bestand op deze pagina, of klik om er een te kiezen.
  2. Kies XML als doel. De omzetting gebeurt in je browser en het bestand wordt niet geüpload.
  3. Download het klare XML-bestand.

NDJSON of XML: wat er verandert

NDJSON vergeleken met XML
NDJSONXML
Volledige naamNewline-Delimited JSONExtensible Markup Language
Bestandsextensie.ndjson, .jsonl.xml
Mediatypeapplication/x-ndjsonapplication/xml
Voor het eerst gepubliceerd20131998
Uitgegeven doorW3C
SpecificatieXML 1.0
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserElke browser
In plaats daarvan overwogenJSON, CSVJSON, YAML

Wat behouden blijft

Er gaat niets verloren. NDJSON en XML bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.

Het resultaat openen

XML opent in elke actuele browser. NDJSON komt nog minder ver. Gaat het bestand naar een webpagina of een formulier, dan is dat meestal de hele reden voor de omzetting.

De gebruikelijke programma's overlappen niet: NDJSON open je in jq en pandas, XML in Visual Studio Code en oXygen XML Editor — wie het resultaat krijgt, heeft dus iets uit de tweede rij nodig.

Waarvoor elk formaat bedoeld is

XML komt van W3C en stamt uit 1998, vastgelegd in XML 1.0. Visual Studio Code en oXygen XML Editor lezen het formaat.

XML verscheen in 1998 en NDJSON in 2013. Het oudste is doorgaans het veiligste bestand om te overhandigen; het nieuwste doet hetzelfde werk met minder bytes.

Van NDJSON naar XML: veelgestelde vragen

Wordt mijn NDJSON-bestand ergens heen geüpload?

Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt.

Is NDJSON naar XML omzetten gratis?

Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk.

Gaat er kwaliteit verloren bij het omzetten van NDJSON naar XML?

Nee. XML bewaart dezelfde inhoud zonder iets weg te gooien: het resultaat is in kwaliteit identiek aan het origineel.

Is NDJSON naar XML verliesvrij?

Er gaat niets verloren. NDJSON en XML bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.

Meer over deze formaten