XML naar JSON

Gratis online XML naar JSON converter gebaseerd op de native DOMParser van de browser. XML-kenmerken worden direct aan velden toegewezen, herhalende elementen worden samengevoegd tot arrays, tekst gaat in het value-veld. JSON- of YAML-uitvoer met prettyPrint en XML-foutzelfreparatie, 100% in de browser.

Gerelateerde aanbevelingen

Over XML naar JSON: zet XML-gegevens automatisch om in standaard JSON-objecten

XML naar JSON is het proces van het converteren van XML-geformatteerde gegevens (SOAP-berichten, RSS-feeds, configuratiebestanden) naar JSON-objecten. XML is het traditionele formaat voor bedrijfssystemen, SOAP-webservices, configuratiebestanden en Office-documenten, terwijl JSON de facto-standaard is voor moderne web-API's, JavaScript en NoSQL-databases. Elk formaat heeft zijn sterke punten: XML is strikt, zelfbeschrijvend en breed compatibel met naamruimten en schema-validatie; JSON is beknopt, eenvoudig te parseren en past natuurlijk bij JavaScript. Het converteren van XML naar JSON voor moderne frontends of microservices is een veelvoorkomende behoefte, en deze tool automatiseert dat proces.

De kern van de tool is het gebruik van de native DOMParser van de browser om XML te parseren en automatisch de DOM-boom te doorlopen om een JSON-object te produceren. DOMParser is de ingebouwde XML-parser van de browser, volgt de W3C DOM-standaard en ondersteunt alle XML 1.0-functies, inclusief naamruimten, CDATA, opmerkingen en kenmerken.

De toewijzingsregels zijn intuïtief: elk XML-element wordt een JSON-object, elementkenmerken worden direct objectvelden (zonder @-voorvoegsel, waardoor de rommelige naamgevingsconventies van sommige tools worden vermeden), tekst gaat in het value-veld, en herhalende broer/zus-elementen met dezelfde tagnaam worden samengevoegd tot arrays. Bijvoorbeeld, <bookstore><book id="1"><title>Great Gatsby</title></book><book id="2"><title>Brief History</title></book></bookstore> wordt {bookstore: {book: [{id: "1", title: {value: "Great Gatsby"}}, {id: "2", title: {value: "Brief History"}}]}}.

De keuze voor directe kenmerktoewijzing zonder voorvoegsel is een belangrijke ontwerpbeslissing. Veel XML-conversietools gebruiken @attribute, #text en andere speciale voorvoegsels om kenmerken van tekst te onderscheiden. Hoewel dat nauwkeurig is, is de resulterende JSON-structuur omslachtig en moeilijk rechtstreeks in JavaScript te gebruiken. Directe kenmerktoewijzing maakt de gegenereerde JSON dichter bij echte bedrijfsdatamodellen; ontwikkelaars kunnen overeenkomstige typen direct in een TypeScript-interface definiëren.

Het omzetten naar arrays van herhalende elementen is een ander belangrijk ontwerp. XML heeft geen native array-concept en vereist herhalende elementen (bijv. meerdere <item>) om lijstgegevens weer te geven. De tool detecteert automatisch meerdere broer/zus-elementen met dezelfde tagnaam en voegt ze samen tot arrays, in lijn met de lijst-semantiek van JSON en vermijdt gegevensverlies of handmatig samenvoegen.

Het dubbele uitvoerformaat (JSON + YAML) is een onderscheidend ontwerp. YAML is een ander populair gegevensserialisatieformaat, breed gebruikt in Kubernetes-, Docker Compose-, Ansible- en GitHub Actions-configuraties. De tool bevat een eenvoudige YAML-converter die standaard 2-spatie-inspringing, lijstvoorvoegsel - en sleutel:waarde-syntaxis ondersteunt. Schakel met één klik tussen JSON en YAML.

De XML-fout-zelfreparatie (tryFixXML) verbetert de fouttolerantie van de tool. XML-invoer uit de echte wereld mist vaak de XML-declaratie (<?xml version="1.0"?>) of gebruikt zelfsluitende tags in HTML-stijl (bijv. <br>) in plaats van de XML-stijl <br />. De tool voegt automatisch de XML-declaratie toe en voltooit de schuine streep op zelfsluitende tags, waardoor de DOMParser meer niet-standaard XML correct kan verwerken.

XML-formattering en -compressie (formatXML/compressXML) worden mogelijk gemaakt door de xml-formatter-bibliotheek. De prettyPrint-modus voert 2-spatie-inspringende, leesbare XML uit; de compressiemodus voert compacte XML zonder witruimte uit die geschikt is voor netwerktransmissie. Ontwikkelaars kunnen de tool gebruiken om XML te comprimeren voordat ze het in een database opslaan, waardoor 30-50% opslagruimte wordt bespaard.

Realtime conversie is een praktische functie. Nadat u stopt met typen, converteert de tool met een debounce van 500ms; gecombineerd met de zes sneltoetsen (macOS ⇧⌘+F/C/T/O/D/K) kunnen gebruikers snel veelvoorkomende bewerkingen uitvoeren zonder muisklikken.

De puur client-side verwerking is de centrale architectuurbeslissing. De volledige XML-analyse, DOM-doorloop, JSON-serialisatie en YAML-conversie draaien in browser-JavaScript. DOMParser wordt native door de browser geleverd (geen XML-parser-bundel nodig), en xml-formatter is een lichtgewicht npm-pakket (minder dan 30 KB). Originele XML-gegevens worden nooit naar een server gestuurd, zodat gevoelige SOAP-berichten (met bestelinformatie, gebruikersreferenties of bedrijfs-API-antwoorden) veilig lokaal kunnen worden verwerkt.

Toepassingsgevallen

  • Converteer XML-antwoorden van betalingsgateways, ERP- of legacy CRM-API's naar JSON voor moderne frontends of Node.js-backends.
  • Parseer RSS / Atom-feeds in JSON om ze in web-frontends weer te geven, samen te voegen in uniforme feed-lezers of in databases te importeren.
  • Lees XML-configuratiebestanden van Java-toepassingen (web.xml, applicationContext.xml) en converteer ze naar JSON voor jq-query's of import in andere hulpmiddelen.
  • Converteer SOAP 1.1/1.2 XML-antwoorden naar JSON en verwerk ze met Node.js-bibliotheken zoals jsonwebtoken of lodash.
  • Parseer Maven pom.xml, Ant build.xml en vergelijkbare build-scripts in JSON voor project-metadata-visualisatie of afhankelijkheidsanalyse.
  • Converteer RSS-feeds, Sitemap XML, Atom-abonnementenbronnen naar JSON-formaat voor opslag in moderne databases zoals Elasticsearch of MongoDB.
  • Converteer industriestandaard XML-formaten (HL7, ISO 20022) van gezondheidszorg of financiën naar JSON voor moderne microservices.
  • Converteer SEO-gerelateerde XML-bestanden (sitemap.xml, robots.xml) van Google Merchant Center of Sitemap.org naar JSON voor crawlers of analysetools.

Hoe te gebruiken

  1. Plak je XML in de linker editor, klik op Uploaden om een .xml/.txt-bestand te selecteren, of klik op Voorbeeld om het ingebouwde boekhandel-voorbeeld te laden.
  2. De tool converteert automatisch 500ms na het stoppen met typen. Bekijk de geconverteerde JSON of YAML aan de rechterkant met CodeMirror-syntaxis-accentuering.
  3. Klik op de JSON / YAML-knoppen in de rechterwerkbalk om het uitvoerformaat in realtime te wijzigen. U kunt ook de knoppen Formatteren (⇧⌘+F) of Comprimeren (⇧⌘+C) gebruiken om het XML-invoerformaat aan te passen.
  4. Klik op Kopiëren om de JSON/YAML naar het klembord te plaatsen, of klik op Downloaden om het op te slaan als een bestand met de juiste extensie (output.json / output.yaml / output.xml).
  5. Om XML-syntaxisfouten te herstellen, klikt u op de Repareren-knop naast de foutmelding. De tool roept tryFixXML aan om de XML-declaratie toe te voegen en zelfsluitende tags te voltooien.
  6. Plak de JSON in uw doelcode (TypeScript-interface-definitie, API-antwoordtype, enz.) of importeer het in uw backendservice voor verdere verwerking.

Functies

  • Slimme DOM-boom-analyse: parseert XML met de native DOMParser van de browser en doorloopt automatisch de knooppuntenboom om een standaard JSON-object te produceren, zonder afhankelijkheden.
  • Directe kenmerktoewijzing: XML-kenmerken (bijv. id="1", category="fiction") worden reguliere JSON-objectvelden zonder @-voorvoegsel.
  • Herhalende element-arrays: broer/zus-elementen met dezelfde tagnaam worden automatisch samengevoegd tot JSON-arrays ({book: [{...}, {...}]}).
  • Tekstknooppunt-extractie: de tekstinhoud van het element wordt automatisch opgeslagen in een value-veld.
  • Dubbele formaat-uitvoer: één-klik-schakelaar tussen JSON (prettyPrint van 2 spaties) en YAML (2-spatie-inspringing, lijstvoorvoegsel -) voor verschillende gebruikssituaties.
  • XML-fout-zelfreparatie: ingebouwde tryFixXML voegt ontbrekende XML-declaraties toe en voltooit zelfsluitende tags.
  • XML-formaat en -compressie: gebruikt de xml-formatter-bibliotheek om prettyPrint- en minify-uitvoer te ondersteunen (2-spatie-inspringing of geen witruimte).
  • Realtime automatische conversie: converteert 500ms na het stoppen met typen, zonder handmatige klikken.
  • Dubbele JSON/XML-accentuering: de linkerkant gebruikt CodeMirror XML-syntaxis-accentuering; de rechterkant schakelt tussen JSON- of YAML-accentuering.
  • Compleet sneltoetssysteem: zes gangbare sneltoetsen (formatteren/comprimeren/converteren/uploaden/downloaden/wissen) voor macOS en Windows/Linux.
  • Kopiëren en downloaden: kopieer met één klik naar het klembord, of sla op als een standaard output.json/output.yaml/output.xml-bestand (extensie automatisch gekozen op basis van formaat).
  • 100% in de browser: de volledige XML-analyse, DOM-doorloop en JSON-serialisatie gebeuren in client-side JavaScript; de oorspronkelijke XML verlaat nooit uw apparaat, en de DOMParser wordt native door de browser geleverd.

Veelgestelde vragen

Hoe converteer ik XML naar JSON-formaat?

Plak je XML in de linker editor en de tool gebruikt de native DOMParser van de browser om het te parseren, en doorloopt vervolgens automatisch de DOM-boom om een standaard JSON-object te bouwen. De wortelknoop is ingepakt in { [tagName]: {...} }, attributen worden direct aan velden toegewezen (zonder @-voorvoegsel), de tekst van het element gaat in het value-veld, en herhalende broer/zus-elementen met dezelfde tagnaam worden samengevoegd tot een array. De conversie wordt 500ms na het stoppen met typen uitgevoerd.

Hoe worden XML-kenmerken en tekstknopen toegewezen?

De tool gebruikt een intuïtieve toewijzing: XML-kenmerken worden reguliere JSON-objectvelden (bijv. <book id="1"> wordt {id: "1", ...} zonder @-voorvoegsel), en de tekstinhoud van het element gaat in het value-veld (bijv. <title>Great Gatsby</title> wordt {value: "Great Gatsby"}). Wanneer een element zowel kenmerken als tekst heeft, worden beide opgeslagen als broers/zussen in hetzelfde object.

Worden herhalende XML-elementen automatisch omgezet in JSON-arrays?

Ja. De tool detecteert automatisch meerdere broer/zus-elementen met dezelfde tagnaam (bijv. drie <book>-elementen onder <bookstore>) en voegt ze samen tot een JSON-array. Bijvoorbeeld, <bookstore><book>...</book><book>...</book></bookstore> wordt {bookstore: {book: [{...}, {...}]}}.

Hoe worden pure tekstknopen behandeld?

Wanneer een XML-element geen kenmerken en alleen tekstinhoud heeft, geeft de tool de tekst direct als een string terug (bijv. <name>Alice</name> wordt "Alice"). Wanneer het element zowel kenmerken als tekst heeft, worden de kenmerken en de tekst opgeslagen als broers/zussen in hetzelfde object ({attr: "...", value: "..."}).

Kan de tool misvormde XML verwerken (ontbrekende sluitingstags)?

Ja. De ingebouwde tryFixXML-reparatiefunctie voegt automatisch de ontbrekende XML-declaratie (<?xml version="1.0" encoding="UTF-8"?>) toe en voltooit de schuine streep voor zelfsluitende tags zoals br, hr en img. Dit verbetert aanzienlijk de compatibiliteit met verouderde systemen en niet-standaard API's van derden.

Welke XML-bestandstypen worden ondersteund?

De tool ondersteunt .xml- en .txt-bestanden (UTF-8-codering). Klik op de knop Uploaden om een lokaal bestand te selecteren; de tool leest het via de native FileReader-API van de browser zonder het naar een server te uploaden.

Kan het zowel JSON als YAML genereren?

Ja. De tool ondersteunt zowel JSON- als YAML-uitvoer. Klik op de JSON/YAML-schakelaar in de rechterwerkbalk om het formaat in realtime te wijzigen. JSON wordt uitgevoerd met prettyPrint van 2 spaties; YAML gebruikt standaard 2-spatie-inspringing, lijstvoorvoegsel - en sleutel:waarde-syntaxis.

Wat is de naam van het gedownloade bestand?

De extensie wordt automatisch gekozen op basis van het huidige uitvoerformaat: output.json voor JSON, output.yaml voor YAML en output.xml (het oorspronkelijke formaat) wanneer er invoer is maar geen conversie.

Welke sneltoetsen zijn beschikbaar?

De tool ondersteunt deze sneltoetsen: op macOS, ⇧⌘+F om te formatteren, ⇧⌘+C om te comprimeren, ⇧⌘+T om te converteren, ⇧⌘+O om te uploaden, ⇧⌘+D om te downloaden, ⇧⌘+K om te wissen; op Windows/Linux, gebruik Ctrl in plaats van ⌘. Zes sneltoetsen dekken de volledige workflow.

Worden XML-naamruimten ondersteund?

Ja. De tool gebruikt DOMParser om XML te parseren, die native naamruimten (xmlns) ondersteunt. Naamruimte-voorvoegsels worden bewaard als onderdeel van de elementnaam in de JSON, bijv. <svg:circle> wordt {svg:circle: {...}}. Om elementen tussen naamruimten te openen, identificeer ze op naamruimte-voorvoegsel in de JSON-parser.

Worden CDATA-secties ondersteund?

Ja. CDATA-sectie-inhoud (<![CDATA[...]]>) wordt automatisch samengevoegd in de textContent van het element door de DOMParser, en de tool extraheert het in het value-veld als normale tekst.

Welke invoerbestandsgrootte wordt ondersteund?

Er is geen harde limiet; de praktische limiet is het browsergeheugen. XML tot 1-2 MB werkt soepel; grotere bestanden kunnen vertragen vanwege de grotere geheugenvoetafdruk van DOMParser.

Probleemoplossing

JSON-parseerfout 'unclosed token', wat te doen?

De oorzaak is meestal ontbrekende sluitingstags, niet-overeenkomende attribuut-aanhalingstekens of niet-escaped speciale tekens. Klik op de Repareren-knop naast de foutmelding om tryFixXML aan te roepen, dat automatisch de XML-declaratie toevoegt en zelfsluitende tags voltooit. Als het nog steeds mislukt, controleer dan handmatig de XML-structuur of gebruik document.documentElement.outerHTML in de browser-ontwikkelaarstools om het geparste resultaat te bekijken.

Attribuutvolgorde in JSON komt niet overeen met de bron-XML?

De JSON-standaard garandeert geen attribuutvolgorde; de tool wijst attributen toe in de volgorde van de broncode. Als uw bedrijf volgordegevoelig is, herbouw dan de JSON als een gesorteerde array met toPairs van lodash of vergelijkbare hulpmiddelen. De meeste JavaScript-engines (V8, SpiderMonkey) behouden de invoegvolgorde van tekenreekssleutels.

Een enkel element met dezelfde tagnaam wordt geen array, hoe af te handelen?

De tool converteert alleen naar een array wanneer het meerdere broer/zus-elementen met dezelfde tagnaam detecteert; als er slechts één element is, houdt de tool het als een enkel object. Om array-conversie af te dwingen (zelfs met slechts één element), wikkel het in met castArray van lodash na de conversie of dwing arrays af via JSON Schema-validatie.

Hoe behoud ik speciale tekens in XML-attributen (zoals <, &)?

DOMParser desescapet automatisch attribuutwaarden; de tool behoudt de niet-escaped inhoud. Als de originele XML &lt; heeft, is de geconverteerde JSON-waarde <. Dit is standaard XML-gedrag. Als u de originele escaped vorm moet behouden, gebruik dan een aangepaste XML-tokenizer-bibliotheek in plaats van DOMParser.

Waarom heeft de YAML-uitvoer geen type-informatie?

YAML ondersteunt typen native (12 is number, true is boolean, null is null), maar de eenvoudige YAML-converter van de tool serialiseert alle waarden als strings. Om typen te behouden, gebruik je een volwassen YAML-bibliotheek zoals js-yaml, of dwing je typen af via JSON Schema-validatie aan de parser-kant.

Hoe worden XML Processing Instructions (PI) verwerkt?

DOMParser behoudt XML-verwerkingsinstructies (bijv. <?xml-stylesheet ...?>) als ProcessingInstruction-knooppunten in document.firstChild. De tool doorloopt momenteel alleen Element-knooppunten, dus verwerkingsinstructies worden genegeerd. Om ze te behouden, extraheer je handmatig document.firstChild.nodeValue.

Waarmee open ik het gedownloade .json-bestand?

Het gedownloade output.json is een UTF-8-gecodeerd standaard JSON-bestand. Je kunt het openen met elke teksteditor (VS Code, Sublime, Notepad++) of gespecialiseerd JSON-hulpmiddel (jq, JSDoc).

Woordenlijst

JSON (JavaScript Object Notation)
Lichtgewicht gegevensuitwisselingsformaat gebaseerd op de syntaxis van JavaScript-objecten, maar onafhankelijk van elke programmeertaal. Ondersteunt zes basistypen: object ({}), array ([]), string, number, boolean en null.
XML (eXtensible Markup Language)
Uitbreidbare opmaaktaal gedefinieerd door W3C in 1998. Gebruikt tags om gegevens te beschrijven en ondersteunt naamruimten, schema-validatie en XSLT-transformaties.
DOMParser
Browser-native API (W3C DOM-standaard) die XML- of HTML-strings parseert in een DOM-boom. Alle moderne browsers (Chrome, Firefox, Safari, Edge) hebben het ingebouwd, geen bibliotheek van derden nodig.
xml-formatter
Lichtgewicht JavaScript-bibliotheek (minder dan 30 KB) voor het formatteren (prettyPrint) en comprimeren (minify) van XML-documenten. Ondersteunt aangepaste inspringing, lijnscheidingstekens en collapseContent-opties.
Kenmerktoewijzing
Hoe XML-elementkenmerken worden toegewezen aan JSON-objectvelden. De tool gebruikt een directe toewijzingsaanpak: <book id="1"> wordt {id: "1"}, zonder @-voorvoegsel.
Herhalende element-arrays
Broer/zus-XML-elementen met dezelfde tagnaam (zoals meerdere <item>) worden automatisch samengevoegd tot een JSON-array.
value-veld
Conventie van de tool voor de tekstinhoud van het XML-element. De tekst gaat in een value-veld.
YAML (YAML Ain't Markup Language)
Mensvriendelijk gegevensserialisatieformaat, breed gebruikt in Kubernetes-, Docker Compose-, Ansible- en GitHub Actions-configuratiebestanden.
SOAP (Simple Object Access Protocol)
XML-gebaseerd webservice-communicatieprotocol. SOAP-berichten zijn ingepakt in een SOAP-envelop (XML-naamruimte) en bevatten een header en een body (XML-payload).
RSS / Atom-feed
XML-gebaseerde inhoudsdistributieformaten. RSS 2.0 organiseert inhoud in een <rss><channel><item>-structuur, terwijl Atom <feed><entry> gebruikt.
XML-naamruimte
Mechanisme om naamconflicten van elementen te vermijden met het xmlns-kenmerk, in het formaat xmlns:prefix="uri".
CDATA-sectie
Speciale XML-syntaxis <![CDATA[...]]> om tekst met speciale tekens (zoals <, >, &) in te sluiten zonder escape.
tryFixXML
Ingebouwde XML-reparatiefunctie die automatisch ontbrekende XML-declaraties toevoegt en de schuine streep voltooit voor zelfsluitende tags zoals br, hr en img.
prettyPrint
Uitvoermodus van de xml-formatter-bibliotheek die automatisch inspringing en lijnscheidingen toevoegt voor betere leesbaarheid.

XML-element naar JSON-veld toewijzingsregels

Toewijzingsregels van de tool gebaseerd op DOMParser:

XML-structuurXML-voorbeeldJSON-uitvoerToewijzingsregel
element with attrs<book id="1" category="fiction"/>{"id": "1", "category": "fiction"}Kenmerken direct toegewezen aan objectvelden
element with text<title>Great Gatsby</title>{"value": "Great Gatsby"}Tekstinhoud gaat in value-veld
attrs + text<price currency="USD">12.99</price>{"currency": "USD", "value": "12.99"}Kenmerken en tekst zijn broers/zussen
nested elements<book><title>Gatsby</title></book>{"title": {"value": "Gatsby"}}Kindelementen worden velden
repeated elements<books><book/><book/></books>{"book": [{}, {}]}Herhalende elementen samengevoegd tot array
root element<bookstore>...</bookstore>{"bookstore": {...}}Wortel ingepakt in { [tagName]: ... }
namespace prefix<svg:circle/>{"svg:circle": {...}}DOMParser ondersteunt naamruimten

JSON vs YAML vergelijking

De twee uitvoerformaten die door de tool worden ondersteund:

DimensieJSONYAMLOpmerkingen
Syntaxis{ } : [ ] beknoptinspringingen + - lijstenJSON beknopter, YAML leesbaarder
Gegevenstypennumber/bool/null nativenumber/bool/null nativeBeide behouden typen
Inspringing2 spaties2 spatiesTool gebruikt 2 spaties
Arrays[1, 2, 3]- 1\n- 2\n- 3JSON haken, YAML streepjes
Opmerkingenniet ondersteund# opmerkingenYAML ondersteunt opmerkingen
GebruikssituatiesREST API, frontend-backendK8s, Docker, CI/CDWeb gebruikt JSON, config gebruikt YAML

Privacy & Security

Deze XML-naar-JSON-tool draait volledig in uw browser. XML-analyse (aangedreven door de native DOMParser van de browser), DOM-boomdoorloop, JSON-serialisatie en YAML-conversie draaien in client-side JavaScript; xml-formatter is de enige externe afhankelijkheid (een npm-pakket van minder dan 30 KB). Originele XML-gegevens worden nooit naar een server gestuurd. Bestandsuploads gebruiken de native FileReader-API van de browser en gaan nooit via een tussendienst. De tool gebruikt geen trackingcookies en verzamelt geen invoer- of gebruiksgegevens. Alle invoer en uitvoer worden uit het geheugen gewist zodra de pagina wordt gesloten of vernieuwd. Veilig te gebruiken voor XML-berichten die gevoelige bedrijfsgegevens bevatten (bestelinformatie, gebruikersreferenties, bedrijfs-API-antwoorden).

Authoritative References