XML Minifier

XML minifizieren durch Entfernen von Leerzeichen und Kommentaren

Beispiel ausprobieren

XML-Eingabe

Minifiziertes XML

Läuft lokal · Sicher zum Einfügen von Secrets
Minifiziertes XML wird hier angezeigt…

Was ist XML-Minifizierung?

XML-Minifizierung ist der Prozess, alle nicht notwendigen Zeichen aus einem XML-Dokument zu entfernen, ohne dessen Bedeutung zu ändern. Ein XML Minifier entfernt Leerzeichen zwischen Tags, löscht Kommentare, beseitigt Zeilenumbrüche und reduziert Einrückungen, um eine kompakte, einzeilige Ausgabe zu erzeugen. Das Ergebnis ist eine XML-Zeichenkette, die Parser identisch zum ursprünglich formatierten Dokument verarbeiten und das gleiche Datenmodell erzeugen.

Die XML-1.0-Spezifikation (W3C-Empfehlung, fünfte Ausgabe) definiert Regeln zur Leerzeichenbehandlung in Abschnitt 2.10. Leerzeichen zwischen Tags ohne semantischen Wert werden als "nicht wesentlicher Leerraum" bezeichnet. XML-Prozessoren dürfen diesen verwerfen. Leerzeichen innerhalb von Textinhalten sind hingegen standardmäßig bedeutsam, sofern das übergeordnete Element nicht xml:space="default" deklariert. Ein korrekter XML Minifier unterscheidet zwischen diesen beiden Fällen und entfernt nur das, was sicher entfernt werden kann.

Minifizierung unterscheidet sich von Komprimierung. Gzip oder Brotli reduzieren die Größe auf der Transportschicht und erfordern eine Dekomprimierung vor dem Parsen. Minifizierung reduziert die Rohgröße des Dokuments selbst, sodass das XML gültig bleibt und von jedem Parser ohne Dekomprimierungsschritt lesbar ist. In der Praxis liefert das Minifizieren vor dem Komprimieren die besten Ergebnisse: Redundante Zeichen werden zuerst entfernt, anschließend arbeitet der Komprimierungsalgorithmus auf einer kompakteren Eingabe.

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>

Warum einen XML Minifier verwenden?

Formatiertes XML mit Einrückungen und Kommentaren ist ideal für die Entwicklung und Code-Reviews. Für Speicherung, Übertragung und maschinelle Verarbeitung fügen diese Formatierungszeichen Bytes ohne Mehrwert hinzu. Ein XML Minifier schließt diese Lücke.

Transfergröße sofort reduzieren
Das Entfernen von Leerzeichen und Kommentaren aus einer typischen XML-Konfigurationsdatei reduziert deren Größe um 20–40 %. Bei SOAP-Payloads und großen Feeds übersteigen die Einsparungen häufig 30 % und senken Bandbreitenkosten sowie API-Antwortzeiten.
🔒
Läuft clientseitig, keine Uploads
Der Minifier läuft im Browser über den nativen DOMParser. Es werden keine Daten an einen Server gesendet. Die Verarbeitung erfolgt lokal, unabhängig vom Inhalt des XML.
📦
Keine Anmeldung oder Installation erforderlich
XML einfügen, minifizierte Ausgabe erhalten. Keine Kontoerstellung, kein CLI-Tool zu installieren, keine Abhängigkeiten. Funktioniert auf jedem Gerät mit einem modernen Browser.
🔧
Verarbeitet jedes wohlgeformte XML
Unterstützt Namensräume, CDATA-Abschnitte, Verarbeitungsanweisungen und tief verschachtelte Strukturen. Wenn die Eingabe wohlgeformtes XML ist, erzeugt der Minifier eine gültige minifizierte Ausgabe.

Anwendungsfälle für den XML Minifier

Frontend-Entwicklung
SVG-Dateien minifizieren, die in HTML oder CSS eingebettet sind. Das Entfernen von Leerzeichen und Kommentaren aus SVG-Markup reduziert das Seitengewicht ohne Veränderung der gerenderten Grafik. Selbst ein bescheidenes SVG-Icon-Set kann dabei mehrere Kilobyte einsparen.
Backend-API-Optimierung
SOAP-Antworten und XML-RPC-Payloads vor der Übermittlung an Clients verkleinern. Minifiziertes XML wird schneller geparst und reduziert die Netzwerklatenz für Dienste mit hohem Durchsatz. Der Gewinn ist am größten, wenn Antworten auf der Transportschicht noch nicht komprimiert werden.
DevOps und CI/CD-Pipelines
XML-Konfigurationsdateien (pom.xml, web.xml, .csproj) in Build-Pipelines minifizieren, um die Artefaktgröße in Docker-Images und Deployment-Paketen zu reduzieren. Kleinere Images bedeuten schnellere Pull-Zeiten und niedrigere Speicherkosten in Container-Registries.
QA und Testing
XML-Test-Fixtures vor dem Vergleich normalisieren, indem sie minifiziert werden. Das Entfernen von Formatierungsunterschieden verhindert falsch-negative Testergebnisse durch reine Leerzeichenänderungen. Kanonisch minifizierte Fixtures erleichtern zudem die Überprüfung von Versionskontroll-Diffs.
Data Engineering
Große XML-Datenfeeds (RSS, Atom, XBRL) vor der Speicherung in Datenbanken oder Message Queues komprimieren. Kleinere Payloads bedeuten niedrigere Speicherkosten und höheren Queue-Durchsatz. Bei großem Maßstab summiert sich eine 20%ige Reduktion der Feed-Größe schnell bei Rechen- und I/O-Kosten.
XML-Struktur erlernen
Studierende können XML minifizieren und anschließend neu formatieren, um zu verstehen, wie Parser nicht wesentlichen Leerraum ignorieren und warum die Dokumentstruktur unabhängig von dessen visueller Formatierung ist. Diese Übung macht abstrakte Spezifikationsregeln konkret und unmittelbar nachvollziehbar.

Was XML-Minifizierung entfernt

Nicht alles in einem XML-Dokument kann sicher entfernt werden. Diese Referenztabelle zeigt jeden Typ entfernbaren Inhalts und gibt an, ob das Verwerfen stets sicher oder vom Anwendungsfall abhängig ist.

ElementBeispielSicherheit
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

Minifizierung vs. Gzip vs. Binärformate

Minifizierung, Komprimierung und Binärkodierung adressieren jeweils eine andere Ebene des Größenproblems. Minifizierung hält die Ausgabe als gültiges, menschenlesbares XML. Komprimierung (Gzip, Brotli) reduziert die Größe weiter, erfordert aber einen Dekomprimierungsschritt vor dem Parsen. Binärformate gehen am weitesten, benötigen jedoch auf beiden Seiten der Verbindung einen kompatiblen Encoder/Decoder — praktisch vor allem für eingebettete Systeme oder WSDL-lastige Unternehmensdienste.

XML-Minifizierung
Entfernt nicht wesentlichen Leerraum, Kommentare und Zeilenumbrüche. Die Ausgabe ist weiterhin gültiges XML, lesbar von jedem Parser. Typische Reduktion: 20–40 %. Kein Dekomprimierungsschritt erforderlich.
Gzip / Brotli-Komprimierung
Wendet einen Komprimierungsalgorithmus auf den Bytestrom an. Typische Reduktion: 60–80 % zusätzlich zur Minifizierung. Erfordert einen Dekomprimierungsschritt, bevor das XML geparst werden kann. Standard für HTTP über Content-Encoding.
Binärformate (EXI, Fast Infoset)
Kodiert das XML-Infoset in einer binären Darstellung. Typische Reduktion: 80–95 %. Erfordert einen kompatiblen Encoder/Decoder auf beiden Seiten. Wird in eingeschränkten Umgebungen wie eingebetteten Systemen und WSDL-lastigen Diensten verwendet.

Code-Beispiele

XML programmatisch zu minifizieren folgt in jeder Sprache dem gleichen Muster: das Dokument in einen Baum parsen, optional Kommentar-Knoten entfernen, dann ohne Einrückung serialisieren.

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"

Häufig gestellte Fragen

Ist minifiziertes XML noch gültiges XML?
Ja. Minifizierung entfernt nur nicht wesentlichen Leerraum und Kommentare. Das resultierende Dokument entspricht derselben XML-1.0- oder XML-1.1-Spezifikation wie das Original. Jeder konforme Parser erzeugt aus der formatierten wie aus der minifizierten Version das identische Datenmodell.
Wie viel kleiner wird XML nach der Minifizierung?
Die Einsparungen hängen davon ab, wie das Original formatiert war. Stark eingerücktes XML mit Kommentaren schrumpft typischerweise um 20–40 %. Ein bereits kompaktes Dokument verliert möglicherweise nur 5–10 %. Vergleichen Sie die Byte-Anzahl von Ein- und Ausgabe, um die genaue Reduktion zu messen.
Kann Minifizierung mein XML beschädigen?
Wenn der Minifier ausschließlich Leerzeichen zwischen Tags (nicht wesentlicher Leerraum) und Kommentare entfernt, bleiben die Dokumentsemantiken unverändert. Der einzige Grenzfall sind xml:space="preserve"-Abschnitte, in denen Leerzeichen innerhalb von Textknoten bedeutsam sind. Ein korrekter Minifier respektiert diese Direktive und lässt diese Abschnitte unberührt.
Was ist der Unterschied zwischen XML-Minifizierung und XML-Komprimierung?
Minifizierung bearbeitet den XML-Text selbst, indem Zeichen ohne Datenwert entfernt werden. Komprimierung (Gzip, Brotli) kodiert den gesamten Bytestrom in ein kleineres Binärformat, das vor dem Parsen dekomprimiert werden muss. Minifizierung und Komprimierung ergänzen sich: zuerst minifizieren, dann für den Transport komprimieren.
Sollte ich XML vor der Speicherung in einer Datenbank minifizieren?
Bei großen Mengen an XML-Daten reduziert das Minifizieren vor der Speicherung den Speicherplatzbedarf und beschleunigt Lesevorgänge. Bei Konfigurationsdateien oder Vorlagen, die Entwickler manuell bearbeiten, sollte die formatierte Version gespeichert und zur Build-Zeit oder bei der Übertragung minifiziert werden. Der Kompromiss liegt zwischen Lesbarkeit und Speichereffizienz. XML, das auditiert, in der Versionskontrolle verglichen oder von Betriebsteams manuell aktualisiert wird, sollte nicht minifiziert werden — das Beibehalten der Formatierung spart in diesen Fällen weit mehr Zeit, als die Speichereinsparungen wert sind.
Unterstützt xmllint Minifizierung?
Ja. Das Ausführen von xmllint --noblanks input.xml entfernt nicht wesentlichen Leerraum. Kommentare werden standardmäßig nicht entfernt. Um auch Kommentare zu entfernen, leiten Sie die Ausgabe zunächst durch xmlstarlet ed -d '//comment()' weiter oder verwenden ein benutzerdefiniertes XSLT, das Kommentar-Knoten entfernt.
Wie wirkt sich Minifizierung auf die XML-Parse-Performance aus?
Minifiziertes XML wird schneller geparst, weil der Parser weniger Bytes verarbeitet und auf keine reinen Leerraum-Textknoten trifft. Der Unterschied ist am deutlichsten bei großen Dokumenten (1 MB+) und bei Streaming-Parsern, bei denen jeder zusätzliche Knoten den Traversierungs-Overhead erhöht.