XML Minifier

Minificeer XML door witruimte en opmerkingen te verwijderen

Probeer een voorbeeld

XML-invoer

Geminificeerde XML

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

Wat is XML-minificatie?

XML-minificatie is het proces van het verwijderen van alle onnodige tekens uit een XML-document zonder de betekenis ervan te wijzigen. Een XML-minifier verwijdert witruimte tussen tags, verwijdert opmerkingen, elimineert regelafbrekingen en vouwt inspringing samen om compacte uitvoer op één regel te produceren. Het resultaat is een XML-tekenreeks die parsers identiek lezen aan de oorspronkelijke opgemaakte versie, en hetzelfde datamodel opleveren.

De XML 1.0-specificatie (W3C Recommendation, vijfde editie) definieert regels voor witruimteverwerking in sectie 2.10. Witruimte tussen tags zonder semantische waarde wordt "niet-significante witruimte" genoemd. XML-processors mogen deze negeren. Witruimte binnen tekstinhoud is echter standaard significant, tenzij het bovenliggende element xml:space="default" declareert. Een correcte XML-minifier maakt onderscheid tussen deze twee gevallen en verwijdert alleen wat veilig verwijderd kan worden.

Minificatie verschilt van compressie. Gzip of Brotli verkleinen de omvang op de transportlaag en vereisen decompressie vóór het parseren. Minificatie verkleint de onbewerkte documentgrootte zelf, zodat de XML geldig en leesbaar blijft voor elke parser zonder een decompresiestap. In de praktijk levert minificeren vóór comprimeren de beste resultaten op: u elimineert eerst overbodige tekens, waarna het compressie-algoritme op een compactere invoer werkt.

Before · xml
After · xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Product catalog for Q1 2026 -->
<catalog>
  <product id="p101">
    <name>Widget A</name>
    <price currency="USD">29.99</price>
    <!-- Temporarily discounted -->
    <stock>142</stock>
  </product>
  <product id="p102">
    <name>Widget B</name>
    <price currency="EUR">19.50</price>
    <stock>87</stock>
  </product>
</catalog>
<?xml version="1.0" encoding="UTF-8"?><catalog><product id="p101"><name>Widget A</name><price currency="USD">29.99</price><stock>142</stock></product><product id="p102"><name>Widget B</name><price currency="EUR">19.50</price><stock>87</stock></product></catalog>

Waarom een XML Minifier gebruiken?

Opgemaakte XML met inspringing en opmerkingen is ideaal voor ontwikkeling en code-review. Voor opslag, verzending en machinale verwerking voegt die extra opmaak bytes toe zonder enig voordeel. Een XML-minifier overbrugt dat verschil.

Verklein de overdrachtsgrootte direct
Het verwijderen van witruimte en opmerkingen uit een typisch XML-configuratiebestand verkleint de grootte met 20–40%. Voor SOAP-payloads en grote feeds bedraagt de besparing vaak meer dan 30%, wat bandbreedte- en API-responstijden verlaagt.
🔒
Werkt client-side, geen uploads
De minifier draait in de browser via de native DOMParser. Er worden geen gegevens naar een server verzonden. De verwerking vindt lokaal plaats, ongeacht de inhoud van de XML.
📦
Geen account of installatie
Plak uw XML en ontvang de geminificeerde uitvoer. Geen accountregistratie, geen CLI-hulpmiddel om te installeren, geen afhankelijkheden. Werkt op elk apparaat met een moderne browser.
🔧
Ondersteunt elke well-formed XML
Ondersteunt naamruimten, CDATA-secties, verwerkingsinstructies en diep geneste structuren. Als de invoer well-formed XML is, produceert de minifier geldige geminificeerde uitvoer.

Toepassingen van de XML Minifier

Front-endontwikkeling
Minificeer SVG-bestanden die zijn ingesloten in HTML of CSS. Het verwijderen van witruimte en opmerkingen uit SVG-opmaak vermindert het paginagewicht zonder de gerenderde afbeelding te wijzigen. Zelfs een bescheiden set SVG-pictogrammen kan meerdere kilobytes besparen.
Optimalisatie van back-end-API's
Verklein SOAP-responses en XML-RPC-payloads vóór verzending naar clients. Geminificeerde XML parseert sneller en vermindert netwerklatentie voor services met hoge doorvoer. De winst is het grootst wanneer responses nog niet op de transportlaag worden gecomprimeerd.
DevOps en CI/CD-pipelines
Minificeer XML-configuratiebestanden (pom.xml, web.xml, .csproj) in bouwpipelines om de artefactgrootte in Docker-images en implementatiepakketten te verkleinen. Kleinere images leiden tot snellere pull-tijden en lagere opslagkosten in containerregisters.
QA en testen
Normaliseer XML-testfixtures door ze vóór vergelijking te minificeren. Het verwijderen van opmaaksverschillen voorkomt fout-positieve testfouten veroorzaakt door alleen-witruimte-wijzigingen. Canonieke geminificeerde fixtures maken ook versiebeheerdiffs gemakkelijker te beoordelen.
Data-engineering
Comprimeer grote XML-datafeeds (RSS, Atom, XBRL) vóór opslag in databases of berichtenwachtrijen. Kleinere payloads betekenen lagere opslagkosten en hogere doorvoer van wachtrijen. Op grote schaal telt een verlaging van 20% in feedgrootte snel op in reken- en I/O-kosten.
XML-structuur leren
Studenten kunnen XML minificeren en vervolgens opnieuw opmaken om te begrijpen hoe parsers niet-significante witruimte negeren en waarom de documentstructuur onafhankelijk is van de visuele opmaak. Deze oefening maakt abstracte specificatieregels concreet en direct waarneembaar.

Wat XML-minificatie verwijdert

Niet alles in een XML-document kan veilig worden verwijderd. Deze referentietabel toont elk type verwijderbare inhoud en of het weggooien daarvan altijd veilig is of afhankelijk is van uw gebruiksscenario.

ItemVoorbeeldVeiligheid
IndentationSpaces/tabs before tagsAlways safe to remove
Line breaks\n and \r\n between tagsAlways safe to remove
Comments<!-- ... -->Safe unless parsed by app
XML declaration<?xml version="1.0"?>Keep if encoding is non-UTF-8
Processing instructions<?xml-stylesheet ...?>Keep if consumed downstream
Trailing whitespaceSpaces after closing tagsAlways safe to remove
Text node whitespaceSpaces inside text contentRemove only between tags, not within

Minificatie versus Gzip versus Binaire formaten

Minificatie, compressie en binaire codering richten zich elk op een andere laag van het grootteprobleem. Minificatie houdt de uitvoer als geldige, door mensen leesbare XML. Compressie (gzip, Brotli) verkleint verder maar vereist een decompresiestap vóór het parseren. Binaire formaten gaan het verst, maar beide zijden van de verbinding hebben een compatibele encoder/decoder nodig — wat hoofdzakelijk praktisch is voor embedded systemen of WSDL-zware zakelijke diensten.

XML-minificatie
Verwijdert niet-significante witruimte, opmerkingen en regelafbrekingen. De uitvoer is nog steeds geldige XML, leesbaar door elke parser. Typische vermindering: 20–40%. Geen decompresiestap vereist.
Gzip / Brotli-compressie
Past een compressie-algoritme toe op de bytestream. Typische vermindering: 60–80% bovenop minificatie. Vereist een decompresiestap voordat de XML geparsed kan worden. Standaard voor HTTP via Content-Encoding.
Binaire formaten (EXI, Fast Infoset)
Coderen de XML Infoset in een binaire representatie. Typische vermindering: 80–95%. Vereist een compatibele encoder/decoder aan beide zijden. Gebruikt in beperkte omgevingen zoals embedded systemen en WSDL-zware diensten.

Codevoorbeelden

XML programmatisch minificeren volgt in elke taal hetzelfde patroon: parseer het document tot een boomstructuur, verwijder optioneel commentaarknooppunten en serialiseer vervolgens zonder inspringing.

JavaScript (browser)
// Minify XML by parsing and re-serializing (strips formatting)
const raw = `<root>
  <item id="1">
    <!-- note -->
    <name>Test</name>
  </item>
</root>`

const parser = new DOMParser()
const doc = parser.parseFromString(raw, 'application/xml')

// Remove comment nodes
const walker = doc.createTreeWalker(doc, NodeFilter.SHOW_COMMENT)
const comments = []
while (walker.nextNode()) comments.push(walker.currentNode)
comments.forEach(c => c.parentNode.removeChild(c))

const minified = new XMLSerializer().serializeToString(doc)
// → "<root><item id=\"1\"><name>Test</name></item></root>"
Python
from lxml import etree

xml = """<root>
  <item id="1">
    <!-- note -->
    <name>Test</name>
  </item>
</root>"""

tree = etree.fromstring(xml.encode())

# Remove comments
for comment in tree.iter(etree.Comment):
    comment.getparent().remove(comment)

# Serialize without pretty-print (minified)
result = etree.tostring(tree, xml_declaration=False).decode()
# → '<root><item id="1"><name>Test</name></item></root>'

# With xml.etree (stdlib, no lxml needed)
import xml.etree.ElementTree as ET
root = ET.fromstring(xml)
ET.indent(root, space='')  # Python 3.9+
print(ET.tostring(root, encoding='unicode'))
Go
package main

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

func minifyXML(input string) (string, error) {
    decoder := xml.NewDecoder(strings.NewReader(input))
    var out strings.Builder
    encoder := xml.NewEncoder(&out)
    // No indentation = minified output
    for {
        tok, err := decoder.Token()
        if err != nil {
            break
        }
        // Skip comments
        if _, ok := tok.(xml.Comment); ok {
            continue
        }
        // Skip whitespace-only char data
        if cd, ok := tok.(xml.CharData); ok {
            if strings.TrimSpace(string(cd)) == "" {
                continue
            }
        }
        encoder.EncodeToken(tok)
    }
    encoder.Flush()
    return out.String(), nil
}
// minifyXML("<a>\n  <b>1</b>\n</a>") → "<a><b>1</b></a>"
CLI (xmllint)
# Minify XML with xmllint (part of libxml2)
xmllint --noblanks input.xml > minified.xml

# Minify from stdin
echo '<root>
  <item>hello</item>
</root>' | xmllint --noblanks -
# → <?xml version="1.0"?><root><item>hello</item></root>

# Strip comments too (combine with sed or xmlstarlet)
xmlstarlet ed -d '//comment()' input.xml | xmllint --noblanks -

# Check size reduction
echo "Before: $(wc -c < input.xml) bytes"
echo "After:  $(xmllint --noblanks input.xml | wc -c) bytes"

Veelgestelde vragen

Is geminificeerde XML nog steeds geldige XML?
Ja. Minificatie verwijdert alleen niet-significante witruimte en opmerkingen. Het resulterende document voldoet aan dezelfde XML 1.0- of 1.1-specificatie als het origineel. Elke conforme parser levert hetzelfde datamodel op vanuit zowel de opgemaakte als de geminificeerde versie.
Hoeveel kleiner wordt XML na minificatie?
De besparing hangt af van hoe het origineel was opgemaakt. Sterk ingesprongen XML met opmerkingen krimpt doorgaans met 20–40%. Een document dat al compact is, verliest mogelijk slechts 5–10%. Vergelijk de bytetelling van invoer en uitvoer om de exacte vermindering te meten.
Kan minificatie mijn XML beschadigen?
Als de minifier alleen witruimte tussen tags (niet-significante witruimte) en opmerkingen verwijdert, blijft de documentsemantica gelijk. Het enige randgeval zijn xml:space="preserve"-secties, waarbij witruimte binnen tekstknooppunten betekenisvol is. Een correcte minifier respecteert deze aanwijzing en laat die secties ongemoeid.
Wat is het verschil tussen XML-minificatie en XML-compressie?
Minificatie bewerkt de XML-tekst zelf door tekens te verwijderen die geen gegevens bevatten. Compressie (gzip, Brotli) codeert de volledige bytestream in een kleiner binair formaat dat vóór het parseren gedecomprimeerd moet worden. Minificatie en compressie vullen elkaar aan: minificeer eerst, comprimeer daarna voor transport.
Moet ik XML minificeren vóór opslag in een database?
Bij grote hoeveelheden XML-gegevens vermindert minificeren vóór opslag het schijfgebruik en versnelt het lezen. Voor configuratiebestanden of sjablonen die ontwikkelaars handmatig bewerken, bewaar de opgemaakte versie en minificeer tijdens het bouwen of bij verzending. De afweging is leesbaarheid versus opslagefficiëntie. Minificeer geen XML die wordt geauditeerd, gediffed in versiebeheer of handmatig bijgewerkt door operationele teams — het bewaren van opmaak in die gevallen bespaart veel meer tijd dan de opslagwinst waard is.
Ondersteunt xmllint minificatie?
Ja. Het uitvoeren van xmllint --noblanks input.xml verwijdert niet-significante witruimte. Opmerkingen worden standaard niet verwijderd. Om ook opmerkingen te verwijderen, leidt u de uitvoer door xmlstarlet ed -d '//comment()' of gebruikt u een aangepaste XSLT die commentaarknooppunten verwijdert.
Hoe beïnvloedt minificatie de XML-parseer­prestaties?
Geminificeerde XML parseert sneller omdat de parser minder bytes verwerkt en geen witruimte-only tekstknooppunten tegenkomt. Het verschil is het meest merkbaar bij grote documenten (1 MB+) en in streaming parsers, waar elk extra knooppunt bijdraagt aan de doorloopoverhead.