XML formatter, validator en viewer

Zet geminificeerde XML om in leesbare, opgemaakte tekst en controleer of het document welgevormd is. Plakken, formatteren, bekijken als inklapbare boomstructuur — alles draait in je browser en er wordt niets geüpload.

Gecontroleerd door het Berekening.be rekenteam
Bijgewerkt september 2026
Alles hieronder draait in je browser. Je XML wordt nooit geüpload, opgeslagen of gelogd — dit tabblad sluiten is genoeg om ervan af te zijn.
Ctrl + Enter

Wat dit hulpmiddel doet

Dit is een XML-formatter, -viewer en welgevormdheidsvalidator in één pagina. Plak XML van welke vorm dan ook — een SOAP-envelope, een RSS-feed, een sitemap, een configuratiebestand, een factuur in een van de UBL-dialecten — druk op Formatteren, en het document wordt geparst, gecontroleerd en weergegeven als een ingesprongen, inklapbare boomstructuur. Elementnamen, attribuutnamen, attribuutwaarden, commentaar en CDATA-secties krijgen elk een eigen kleur, elk element laat zien hoeveel kinderen het heeft, en elke tak kan worden ingeklapt zodat een lang document stap voor stap te lezen is.

Formatteren en valideren zijn dezelfde bewerking, van twee kanten bekeken. Om een document te beautifyen moet je het eerst parsen, en parsen is precies wat een validator doet; als de tekst niet geparst kan worden, is er niets om in te springen, en is de foutmelding van de parser meteen het validatieresultaat. Eén knop doet dus beide: hij zet een geminificeerde blob om in leesbare uitvoer als de markup klopt, en vertelt je waar het misging als dat niet zo is.

Elk resultaat verschijnt boven het vorige, zodat je twee payloads kunt vergelijken zonder de eerste kwijt te raken. Resultaten kun je één voor één verwijderen of allemaal tegelijk wissen, en niets overleeft een herlaad van de pagina.

Formatter, beautifier, validator, viewer

Voor dit soort tools circuleren vier woorden, en ze benoemen vier verschillende dingen die mensen ervan willen.

Een formatter drukt het document opnieuw af met consistente witruimte: één element per regel, een vaste inspringing per nestingsniveau, een voorspelbare plek voor elk hoekig haakje. Beautifyen is het oudere woord voor dezelfde bewerking, overgenomen uit de wereld van JavaScript-tooling — een beautifier en een formatter zijn hetzelfde gereedschap onder twee namen. Geen van beide verandert je data, alleen waar de regeleindes vallen.

Een validator beantwoordt een ja-of-nee-vraag over de tekst. Bij XML valt die vraag in tweeën uiteen, en dat is het nuttigste om over dit formaat te begrijpen — het volgende hoofdstuk gaat over dat verschil. Deze pagina beantwoordt de eerste helft: is het document welgevormd.

Een viewer gaat verder dan een formatter. In plaats van tekst af te drukken, verandert hij het geparste document in iets waarmee je kunt werken: een herhalende tak dichtklappen, zien hoeveel kinderen een element heeft, een geneste structuur inlopen zonder sluitende tags met het oog te tellen. Geformatteerde tekst is beter dan geminificeerde tekst, en een boomstructuur is beter dan geformatteerde tekst zodra het document niet meer op het scherm past.

Deze pagina is alle vier tegelijk. De invoer wordt gecontroleerd op welgevormdheid, geformatteerd, beautified en weergegeven als een leesbare boomstructuur, en de knop Kopiëren geeft de beautified tekst terug met een inspringing van twee spaties, voor het geval je toch platte tekst nodig had.

Welgevormd is niet hetzelfde als geldig

XML trekt een grens die JSON niet nodig heeft. Een document is welgevormd wanneer het de syntaxis van de taal volgt: één rootelement, elke openende tag gesloten, tags genest in plaats van overlappend, attribuutwaarden tussen aanhalingstekens, gereserveerde tekens ge-escaped, één consistente encoding. Een document is geldig wanneer het daarnaast ook voldoet aan een schema — een DTD, een XSD, een RELAX NG-grammatica — dat vastlegt welke elementen mogen voorkomen, in welke volgorde, hoe vaak, en wat erin mag staan.

Deze pagina controleert het eerste. Ze gebruikt de parser van je browser, dezelfde strikte XML-parser die je browser toepast op feeds en stylesheets, dus alles wat hij accepteert is per definitie welgevormd. Er wordt geen schema opgehaald of toegepast, en dat is bewust: dat zou betekenen dat het schema over het netwerk wordt opgevraagd, wat botst met de belofte dat hier niets je machine verlaat.

Het praktische gevolg is de moeite waard om expliciet te noemen. Als dit hulpmiddel geen fout meldt, is je XML syntactisch in orde — maar een element in de verkeerde volgorde, een ontbrekend verplicht veld of een datum waar een getal werd verwacht, wordt nog steeds afgewezen door het systeem waar je het naartoe stuurt. Die afwijzing is een schemafout, geen syntaxisfout, en daarvoor is een schema-bewuste validator nodig. Kort gezegd: gebruik deze pagina om te beantwoorden "is mijn XML kapot", en een schemavalidator om te beantwoorden "is mijn XML hier acceptabel".

Je XML verlaat nooit je browser

Niets van wat je hier plakt wordt een netwerkverzoek. De tekst die je plakt, wordt door je eigen browser geparst, weergegeven op de pagina en alleen in het geheugen bewaard — er wordt niets naar een server gestuurd, in een cookie geschreven of in local storage opgeslagen. Verversen wist elk resultaat, en het sluiten van het tabblad ruimt de data op.

Dat is voor XML nog belangrijker dan voor de meeste andere formaten, vanwege wie het nog gebruikt. XML is de taal van facturen, salarisexports, verzekeringsclaims, bankberichten, medische dossiers en overheidsaangiftes. Eén geplakte SOAP-envelope kan een burgerservicenummer, een bankrekening, een salaris en een diagnosecode bevatten, vaak alle vier tegelijk. Een formatter die zijn invoer uploadt, heeft stilletjes een debugstap veranderd in een grensoverschrijdende gegevensoverdracht, en in een gereguleerde omgeving is dat iets wat je zou moeten documenteren en verantwoorden.

De belofte is alleen iets waard als de code hem ook nakomt, dus controleer het zelf: open je netwerktabblad, plak een document en druk op Formatteren. De paginalading bevat hetzelfde analytics-baken als elke andere pagina hier — een URL en een paginatitel — en formatteren voegt daar niets aan toe, wat het document ook bevat. Koppel de netwerkverbinding volledig los en het hulpmiddel blijft werken, want er was nooit iets aan de andere kant om mee te praten.

De foutmelding van de parser lezen

Als het document niet welgevormd is, wordt er niets weergegeven en verschijnt de foutmelding van de parser precies zoals hij is, meestal met een regel- en kolomnummer. Behandel die positie als het punt waarop het parsen mislukte, niet als de plek van de fout zelf. Bij een verdwaald teken vallen die twee samen, maar een niet-gesloten element wordt pas ontdekt wanneer een latere sluittag niet overeenkomt, en dat kan honderden regels verderop zijn.

Een handjevol oorzaken verklaart de meeste mislukkingen. Niet-overeenkomende of overlappende tags, waarbij markup die een browser in HTML zou vergeven, in XML fataal is. Niet-ge-escapete gereserveerde tekens — een los ampersandteken in een URL binnen een tekstknoop is de klassieker, en dat moet als entiteit worden geschreven of in CDATA worden verpakt. Attribuutwaarden zonder aanhalingstekens, geldig in HTML, hier nooit geldig. Een niet-gedeclareerde entiteit, want XML kent er van nature maar vijf bij naam, en al het andere moet gedeclareerd of als numerieke referentie geschreven worden. Meer dan één rootelement, wat gebeurt zodra twee responses aan elkaar zijn geplakt tot één bestand.

Encoding veroorzaakt een stillere categorie fouten. Als de declaratie UTF-8 zegt en de bytes zijn Latin-1, breekt het eerste teken met een accent het parsen af met een melding over een ongeldige bytereeks, wat aanvoelt als een syntaxisfout maar eigenlijk een bestand is dat in de verkeerde encoding is opgeslagen. Een byte order mark vóór de declaratie geeft een even verwarrende klacht over inhoud vóór de proloog.

Namespaces, attributen en witruimte

Namespaces zijn het onderdeel van XML dat mensen verrast die van JSON komen. Een prefix zoals soap: of xsi: maakt geen deel uit van de elementnaam; het is een verwijzing naar een URI die ergens hoger met xmlns wordt gedeclareerd. Twee documenten die er compleet anders uitzien, kunnen hetzelfde document zijn met andere prefixen, en twee die er identiek uitzien kunnen verschillen als hun prefixen aan andere URI's gekoppeld zijn. Deze viewer toont namen precies zoals ze geschreven zijn, prefix inbegrepen, zodat je het document ziet en niet een interpretatie ervan.

Attributen versus kindelementen is de andere eeuwige discussie. XML laat je hetzelfde feit op beide manieren modelleren, en er is geen regel die dat beslecht — attributen zijn geschikt voor kleine, enkelvoudige metadata zoals een identifier of een eenheid, terwijl alles wat kan herhalen, groeien of eigen kinderen nodig heeft, in een element thuishoort. Een geformatteerde boomstructuur lezen maakt een inconsistente keuze meteen zichtbaar, en dat is meestal het moment waarop mensen het opmerken.

Witruimte verdient één waarschuwing. In XML is witruimte binnen een element inhoud: de parser bewaart hem, en dat kan ertoe doen. Deze viewer verbergt tekstknopen die alleen uit witruimte bestaan zodat de structuur leesbaar blijft, en drukt een element met precies één tekstknoop op één regel af. Dat is een presentatiekeuze, en de knop Kopiëren reproduceert hem — dus als je werkt met een formaat waarin voorloopspaties binnen een tekstknoop van belang zijn, kopieer dan uit je origineel en niet uit de beautified uitvoer.

Een uitgewerkt voorbeeld

Neem een klein bestel-document: een root order met een identifier, een geneste klant, een lijst van twee items elk met een prijs, een commentaarregel en een leeg element. Geminificeerd is dat één regel van ruwweg driehonderd tekens, en de vraag "hoeveel items staan er in deze bestelling" beantwoorden betekent tags tellen.

Geformatteerd meldt de kop het rootelement en hoeveel afstammelingen het heeft, de tak met items meldt twee kinderen, en het lege element notes wordt zelfsluitend weergegeven in plaats van als een openend-sluitend paar — een onderscheid dat bepaalt of een veld leeg werd verstuurd of helemaal niet werd verstuurd. Klap de klant dicht en de hele bestelling past in zes regels. Klik op "Voorbeeld laden" om precies dat document weergegeven te zien.

Nee. Niets van wat je plakt wordt verstuurd: parsen en weergeven gebeuren in je browser, en het resultaat bestaat alleen op de pagina die voor je staat. Er is geen cookie, geen local storage en geen logging van wat je plakt, en dat is meteen ook waarom een herlaad de resultaten leegmaakt.

Nee. Het controleert welgevormdheid — de syntaxis van het document — en niet conformiteit aan een schema. Een schema toepassen betekent het ophalen en verwerken ervan, wat zou betekenen dat je document of schema ergens naartoe wordt gestuurd, en deze pagina is er bewust op gebouwd dat niet te doen. Gebruik voor die andere helft van het werk een schema-bewuste validator in je eigen toolchain.

Ja. Beide betekenen dat het document opnieuw wordt afgedrukt met inspringing en regeleindes zodat iemand het kan lezen; beautifyen is gewoon het oudere woord. Geen van beide verandert de volgorde van elementen of de waarden. Wat deze pagina toevoegt, is de viewer: een inklapbare boomstructuur in plaats van een blok tekst, plus een knop Kopiëren die de beautified markup teruggeeft met een inspringing van twee spaties.

Omdat een ampersandteken in XML een entiteitsverwijzing start. Een los "&" in een tekstknoop of attribuutwaarde — meestal binnen een query string — moet geschreven worden als &, of de omringende tekst moet in een CDATA-sectie worden verpakt. Hetzelfde geldt voor een kleiner-dan-teken, dat < moet zijn.

Op een normale machine ruim een paar megabyte. Het plafond wordt bepaald door het geheugen van je browser en de tijd die het kost om de boomstructuur op te bouwen, niet door een serverquotum, want er is geen server bij betrokken. Grote documenten lezen prettiger ingeklapt: gebruik "Alles inklappen" en open daarna alleen de tak die je onderzoekt.

Alleen de presentatie. Het document wordt geparst en opnieuw weergegeven, wat de witruimte tussen elementen normaliseert en lege elementen zelfsluitend afdrukt, maar er wordt geen element van volgorde veranderd en geen waarde aangepast. Witruimte binnen een tekstknoop is het enige waar je mee moet oppassen, want deze weergave trimt die voor de leesbaarheid.

Nee — deze pagina zet XML om in een leesbare boomstructuur en terug in beautified XML-tekst, en verder niets. Een getrouwe omzetting naar JSON moet beslissen wat er gebeurt met attributen, namespaces, gemengde inhoud en herhaalde elementen, en die beslissingen horen bij jouw data, niet bij een generiek hulpmiddel.

Zodra de pagina is geladen, ja. Formatteren en valideren gebruiken de parser die in je browser is ingebouwd, dus je kunt de verbinding verbreken en gewoon doorwerken. Dat is het praktische bewijs van de privacybelofte: een hulpmiddel dat blijft werken zonder netwerk, kan onmogelijk iets ergens naartoe sturen.

Was deze rekenmachine nuttig?

Tik op een ster om te beoordelen. Uw feedback helpt ons de tools te verbeteren waar mensen het meest op vertrouwen.