XML Formatter

XML formatteren en verfraaid weergeven met syntaxmarkering

Probeer een voorbeeld

XML-invoer

Geformateerde XML

Draait lokaal · Veilig om secrets te plakken
Geformateerde XML verschijnt hier…

Wat is XML-opmaak?

XML-opmaak (ook wel XML pretty-printing of XML-verfraaiing genoemd) is het proces van het toevoegen van consistente inspringing en regelafbrekingen aan een XML-document, zodat de hiërarchische structuur zichtbaar wordt. Onbewerkte XML van API's, configuratiegeneratoren of serializers wordt vaak aangeleverd als één enkele regel zonder witruimte tussen de tags. Een XML-formatter parseert dat document tot een boomstructuur en serialiseert het vervolgens opnieuw met voorspelbare opmaak. Het resultaat is visueel helder en veel gemakkelijker te begrijpen, zonder dat de logische inhoud van het document ook maar enigszins wordt gewijzigd.

De XML 1.0-specificatie (W3C Recommendation, vijfde editie) definieert een strenge grammatica waarbij elke openingstag een bijbehorende sluitingstag moet hebben of zelfsluitend moet zijn, attributen moeten worden aangehaald, en vijf tekens (<, >, &, ", ') moeten worden vervangen door entiteitsverwijzingen. Een formatter moet deze regels respecteren terwijl alleen niet-significante witruimte wordt ingevoegd die de informatieinhoud (infoset) van het document niet wijzigt. Een correct begrip van deze regels is essentieel om te garanderen dat geformatteerde XML geldig blijft en door alle conforme XML-parsers kan worden verwerkt.

Geformateerde XML is gemakkelijker te lezen tijdens code-review, gemakkelijker te vergelijken in versiebeheer, en gemakkelijker te debuggen wanneer een service onverwachte gegevens retourneert. De opmaakbewerking zelf is verliesvrij: de logische inhoud van het document blijft identiek, alleen de weergave verandert. Hulpmiddelen zoals git diff en platforms voor het beoordelen van pull-requests tonen alleen gewijzigde regels — consistent ingesprongen XML zorgt ervoor dat die diffs echte wijzigingen weergeven en geen opmaakruis.

Before · xml
After · xml
<catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><genre>Computer</genre><price>44.95</price><publish_date>2000-10-01</publish_date></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><genre>Fantasy</genre><price>5.95</price><publish_date>2000-12-16</publish_date></book></catalog>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
  </book>
</catalog>

Waarom een online XML-formatter gebruiken?

XML handmatig opmaken is foutgevoelig en tijdrovend, vooral bij documenten met diepe nesting of gemengde naamruimten. Een browsergebaseerde formatter levert een opgemaakt resultaat in minder dan een seconde, ongeacht de bestandsgrootte. In tegenstelling tot desktoptools of opdrachtregeltools is geen installatie of configuratie vereist — open de pagina en begin meteen met werken.

Directe pretty-print
Plak of typ XML en ontvang direct ingesprongen uitvoer. Geen wachten op een CLI-hulpmiddel om te installeren of een bouwstap om uit te voeren.
🔒
Privacy-eerste verwerking
Alle parsing en opmaak vindt plaats in uw browser via de DOMParser-API. Uw XML verlaat uw apparaat nooit en wordt nooit naar een server verzonden.
🎨
Configureerbare inspringing
Kies tussen inspringing van 2 spaties, 4 spaties of tabs om aan te sluiten bij de codestandaarden van uw project, zonder configuratiebestanden te bewerken.
📋
Geen account of installatie vereist
Open de pagina, plak uw XML en kopieer het resultaat. Geen aanmeldingsformulieren, geen desktopsoftware, geen browserextensies.

Toepassingen van de XML Formatter

Front-endontwikkeling
Inspecteer SVG-opmaak of XHTML-fragmenten die door een CMS worden geretourneerd. Het opmaken van de onbewerkte uitvoer stelt u in staat specifieke attributen en geneste groepen snel te vinden.
Back-endengineering
Debug SOAP-responses, RSS-feeds of XML-RPC-payloads van externe services. Opgemaakte uitvoer stelt u in staat ontbrekende elementen of onjuiste naamruimten te traceren.
DevOps en CI/CD
Lees Maven pom.xml-bestanden, Ant-bouwscripts of .csproj-projectbestanden die machinaal zijn gegenereerd zonder inspringing. Formatteer ze vóór het committen om diffs overzichtelijk te houden.
QA en testen
Vergelijk verwachte en daadwerkelijke XML-payloads in integratietests. Het formatteren van beide zijden naar dezelfde inspringingstijl elimineert fout-negatieven veroorzaakt door witruimteverschillen.
Data-engineering
Inspecteer XML-exports van databases, ETL-pipelines of open-dataportalen van de overheid. Geformateerde XML onthult de recordstructuur voordat u een XSLT-transformatie of XPath-query schrijft.
XML leren
Studenten die W3C XML-tutorials doorlopen, kunnen oefenbestanden in de formatter plakken om te controleren of hun nesting en attribuutsyntaxis correct zijn.

XML voorgedefinieerde entiteitsverwijzingen

XML reserveert vijf tekens voor zijn syntaxis. Wanneer deze tekens voorkomen als letterlijke tekstinhoud of attribuutwaarden, moeten ze worden vervangen door voorgedefinieerde entiteitsverwijzingen. Een correcte formatter bewaart deze entiteiten tijdens pretty-printing.

TekenRol in XMLEntiteit
<Start of tag&lt;
>End of tag&gt;
&Start of entity&amp;
"Attribute delimiter&quot;
'Attribute delimiter&apos;

XML-inspringingstijlen vergeleken

Er is geen enkele standaard voor XML-inspringing. De keuze hangt af van de conventies van uw team en de hulpmiddelen in uw pipeline. Hieronder staan de drie meest gebruikte stijlen.

2 spaties (aanbevolen)
De meest gebruikte keuze voor webgerelateerde XML: SVG, XHTML, SOAP, Spring-configuratie. Houdt diep geneste documenten compact. Standaard gebruikt in de meeste online formatters en IDE's.
4 spaties
Voorkeur in Java-ecosystemen (Maven, Ant, Android-manifests) waar bestanden zelden meer dan 3-4 nestingniveaus hebben. Komt overeen met de standaardinspringing van Java- en C#-code.
Tabteken
Laat elke ontwikkelaar zijn eigen visuele breedte instellen in zijn editor. Gebruikelijk in oudere projecten en sommige Microsoft-hulpmiddelen (.csproj, .nuspec). Produceert kleinere bestandsgroottes dan spaties.

Codevoorbeelden: XML programmatisch formatteren

Wanneer u XML moet formatteren binnen een script of bouwproces, heeft elke grote taal een ingebouwde of standaardbibliotheekmogelijkheid. In Python kunt u het module xml.dom.minidom of lxml gebruiken, in Java biedt javax.xml.transform ondersteuning voor mooie uitvoer, en in Node.js zijn er bibliotheken zoals xmldom of prettier. Hieronder staan werkende voorbeelden die u direct kunt kopiëren.

JavaScript (DOM API)
const raw = '<root><item>hello</item></root>'
const parser = new DOMParser()
const doc = parser.parseFromString(raw, 'application/xml')
const serializer = new XMLSerializer()
const xml = serializer.serializeToString(doc)

// Indent with XSLT (browser-native approach)
const xslt = new DOMParser().parseFromString(`
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="node()|@*">
      <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>
    </xsl:template>
  </xsl:stylesheet>`, 'application/xml')

const proc = new XSLTProcessor()
proc.importStylesheet(xslt)
const formatted = proc.transformToDocument(doc)
console.log(new XMLSerializer().serializeToString(formatted))
// → <root>\n  <item>hello</item>\n</root>
Python
import xml.dom.minidom

raw = '<root><item>hello</item><item>world</item></root>'
dom = xml.dom.minidom.parseString(raw)
print(dom.toprettyxml(indent='  '))
# → <?xml version="1.0" ?>
# → <root>
# →   <item>hello</item>
# →   <item>world</item>
# → </root>

# With lxml (handles namespaces, XSD, large files)
from lxml import etree
tree = etree.fromstring(raw.encode())
print(etree.tostring(tree, pretty_print=True).decode())
Go
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

func formatXML(raw string) (string, error) {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    var out strings.Builder
    encoder := xml.NewEncoder(&out)
    encoder.Indent("", "  ")
    for {
        tok, err := decoder.Token()
        if err != nil {
            break
        }
        encoder.EncodeToken(tok)
    }
    encoder.Flush()
    return out.String(), nil
}
// formatXML("<a><b>1</b></a>") → "<a>\n  <b>1</b>\n</a>"
CLI (xmllint)
# Format XML file with xmllint (part of libxml2, pre-installed on macOS/Linux)
xmllint --format input.xml > formatted.xml

# Format from stdin
echo '<a><b>1</b></a>' | xmllint --format -
# → <?xml version="1.0"?>
# → <a>
# →   <b>1</b>
# → </a>

# Validate and format at the same time
xmllint --format --schema schema.xsd input.xml

Veelgestelde vragen

Verandert het opmaken van XML de betekenis van het document?
Nee. XML-opmaak voegt alleen niet-significante witruimte toe of verwijdert deze tussen tags. De XML Information Set (infoset) blijft identiek. Één uitzondering: als uw schema xml:space="preserve" gebruikt op bepaalde elementen, moet een formatter die elementen ongemoeid laten, en dit hulpmiddel respecteert dat.
Wat is het verschil tussen XML-opmaak en XML-validatie?
Opmaak voegt inspringing en regelafbrekingen toe om XML leesbaar te maken. Validatie controleert of het document voldoet aan een schema (XSD, DTD of RelaxNG). Een document kan wel-gevormd zijn maar ongeldig ten opzichte van zijn schema. Gebruik dit hulpmiddel voor leesbaarheid en de XML-validator voor schemaconformiteit.
Kan ik XML met naamruimten formatteren?
Ja. De DOMParser van de browser verwerkt XML-naamruimten native. Naamruimtevoorvoegsels, standaardnaamruimtedeclaraties (xmlns) en gekwalificeerde attribuutnamen worden allemaal bewaard tijdens het formatteren. De formatter voegt geen naamruimtebindingen toe, verwijdert ze niet en hernoemt ze niet.
Hoe groot mag een XML-bestand zijn dat ik in de browser kan formatteren?
Browsergebaseerde opmaak werkt goed voor documenten tot ongeveer 10 MB. Daarboven verbruikt de DOM-boom aanzienlijk geheugen en kan de gebruikersinterface traag worden. Gebruik voor zeer grote bestanden een CLI-hulpmiddel zoals xmllint --format, dat XML als stream verwerkt.
Waarom wordt er een XML-declaratie toegevoegd aan mijn geformateerde XML?
Sommige formatters voegen <?xml version="1.0"?> toe bij het serialiseren van de DOM-boom. Deze declaratie is optioneel in XML 1.0 wanneer de codering UTF-8 is. Als u deze niet wilt, verwijder dan de eerste regel uit de uitvoer. De declaratie heeft geen invloed op het parseren door een conforme XML-processor.
Is XML-opmaak hetzelfde als XML-minificatie?
Het zijn tegengestelde bewerkingen. Opmaak voegt witruimte toe om de leesbaarheid te verbeteren. Minificatie verwijdert alle niet-essentiële witruimte om de bestandsgrootte te verkleinen. Beide bewerkingen zijn verliesvrij ten opzichte van de XML-infoset. Als u XML wilt minificeren, gebruik dan de XML Minifier.
Wat is het verschil tussen XML- en HTML-opmaak?
XML is strikt: elke tag moet worden gesloten, attribuutwaarden moeten worden aangehaald, en het document moet precies één rootelement hebben. HTML (specifiek HTML5) is soepeler: optionele sluitingstags, niet-aangehaalde attributen en lege elementen zoals &lt;br&gt; zijn allemaal geldig. Een XML-formatter weigert ongeldige XML, terwijl een HTML-formatter syntaxis tolereert die XML niet zou toestaan.