XML Minifier

Minifikujte XML odstraněním mezer a komentářů

Zkusit příklad

XML Vstup

Minifikované XML

Běží lokálně · Bezpečné pro vkládání tajných údajů
Minifikované XML se zobrazí zde…

Co je minifikace XML?

Minifikace XML je proces odstranění všech nadbytečných znaků z XML dokumentu beze změny jeho významu. XML minifier odstraňuje mezery mezi značkami, komentáře, zalomení řádků a odsazení, aby vznikl kompaktní výstup na jediném řádku. Výsledkem je XML řetězec, který parsery čtou identicky jako původní naformátovanou verzi a produkují stejný datový model.

Specifikace XML 1.0 (doporučení W3C, páté vydání) definuje pravidla pro zpracování mezer v sekci 2.10. Mezery mezi značkami, které nemají sémantickou hodnotu, se označují jako "nevýznamné mezery". XML procesory je smějí vypustit. Mezery uvnitř textového obsahu jsou však ve výchozím nastavení významné, pokud nadřazený prvek nedeklaruje xml:space="default". Správný XML minifier rozlišuje tyto dva případy a odstraňuje pouze to, co je bezpečné odstranit.

Minifikace se liší od komprese. Gzip nebo Brotli zmenšují velikost na transportní vrstvě a vyžadují dekomprimaci před parsováním. Minifikace zmenšuje velikost samotného dokumentu, takže XML zůstává platné a čitelné jakýmkoli parserem bez kroku dekomprimace. V praxi minifikace před kompresí přináší nejlepší výsledky: nejprve odstraníte nadbytečné znaky a kompresní algoritmus pak pracuje s kratším vstupem.

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>

Proč použít XML minifier?

Naformátované XML s odsazením a komentáři je ideální pro vývoj a revizi kódu. Pro ukládání, přenos a strojové zpracování toto formátování přidává bajty bez jakéhokoli přínosu. XML minifier tento rozdíl překlenuje.

Okamžité zmenšení velikosti přenosu
Odstranění mezer a komentářů z typického XML konfiguračního souboru zmenší jeho velikost o 20–40 %. U SOAP payloadů a velkých feedů úspory často přesahují 30 %, čímž se snižují náklady na šířku pásma a doby odezvy API.
🔒
Běží na straně klienta, bez odesílání dat
Minifier běží v prohlížeči pomocí nativního DOMParser. Žádná data se neodesílají na server. Zpracování probíhá lokálně bez ohledu na obsah XML.
📦
Bez registrace ani instalace
Vložte XML a získejte minifikovaný výstup. Žádné vytváření účtu, žádný CLI nástroj k instalaci, žádné závislosti. Funguje na jakémkoli zařízení s moderním prohlížečem.
🔧
Zpracuje jakékoli správně utvořené XML
Podporuje jmenné prostory, sekce CDATA, instrukce pro zpracování a hluboce zanořené struktury. Pokud je vstup správně utvořené XML, minifier vyprodukuje platný minifikovaný výstup.

Případy použití XML minifieru

Vývoj frontendu
Minifikujte SVG soubory vložené v HTML nebo CSS. Odstranění mezer a komentářů ze SVG značkování zmenší váhu stránky bez ovlivnění vykresleného obrázku. Dokonce i skromná sada SVG ikon může ztratit několik kilobajtů.
Optimalizace backendového API
Zmenšete SOAP odpovědi a XML-RPC payloady před odesláním klientům. Minifikované XML se parsuje rychleji a snižuje síťovou latenci u výkonných služeb. Přínos je největší, pokud odpovědi nejsou komprimovány na transportní vrstvě.
DevOps a CI/CD pipeline
Minifikujte XML konfigurační soubory (pom.xml, web.xml, .csproj) v build pipeline, abyste zmenšili velikost artefaktů v Docker obrazech a nasazovacích balíčcích. Menší obrazy znamenají rychlejší stahování a nižší náklady na úložiště v registru kontejnerů.
QA a testování
Normalizujte XML testovací přípravky jejich minifikací před porovnáním. Odstranění rozdílů ve formátování zabraňuje falešně negativním výsledkům testů způsobeným změnami pouze v mezerách. Kanonické minifikované přípravky také usnadňují revizi diffů ve správě verzí.
Datové inženýrství
Komprimujte velké XML datové feedy (RSS, Atom, XBRL) před uložením do databází nebo front zpráv. Menší payloady znamenají nižší náklady na úložiště a vyšší propustnost fronty. Ve velkém měřítku se 20% snížení velikosti feedu rychle projeví na nákladech na výpočet a I/O.
Výuka XML struktury
Studenti mohou XML minifikovat a poté znovu naformátovat, aby pochopili, jak parsery ignorují nevýznamné mezery a proč je struktura dokumentu nezávislá na jeho vizuálním formátování. Tento postup přibližuje abstraktní pravidla specifikace a umožňuje je okamžitě pozorovat.

Co minifikace XML odstraňuje

Ne vše v XML dokumentu lze bezpečně odstranit. Tato referenční tabulka zobrazuje každý typ odstranitelného obsahu a zda je jeho vypuštění vždy bezpečné nebo závisí na konkrétním případu použití.

PoložkaPříkladBezpečnost
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

Minifikace vs Gzip vs binární formáty

Minifikace, komprese a binární kódování se zaměřují na různé vrstvy problému s velikostí. Minifikace zachovává výstup jako platné, člověkem čitelné XML. Komprese (gzip, Brotli) dále zmenšuje, ale před parsováním vyžaduje krok dekomprimace. Binární formáty jdou nejdál, ale obě strany připojení potřebují kompatibilní kodér/dekodér — praktické zejména pro vestavěné systémy nebo podnikové služby náročné na WSDL.

Minifikace XML
Odstraňuje nevýznamné mezery, komentáře a zalomení řádků. Výstup je stále platné XML čitelné jakýmkoli parserem. Typická úspora: 20–40 %. Není potřeba žádný krok dekomprimace.
Komprese Gzip / Brotli
Aplikuje kompresní algoritmus na datový proud bajtů. Typická úspora: 60–80 % nad minifikací. Před parsováním XML vyžaduje krok dekomprimace. Standard pro HTTP prostřednictvím Content-Encoding.
Binární formáty (EXI, Fast Infoset)
Kódují XML Infoset v binární reprezentaci. Typická úspora: 80–95 %. Vyžaduje kompatibilní kodér/dekodér na obou stranách. Používá se v omezených prostředích, jako jsou vestavěné systémy a podnikové služby náročné na WSDL.

Ukázky kódu

Minifikace XML programově sleduje stejný vzor v každém jazyce: dokument se zpracuje do stromu, volitelně se odstraní uzly komentářů a poté se serializuje bez odsazení.

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"

Často kladené otázky

Je minifikované XML stále platné XML?
Ano. Minifikace odstraňuje pouze nevýznamné mezery a komentáře. Výsledný dokument odpovídá stejné specifikaci XML 1.0 nebo 1.1 jako originál. Jakýkoli vyhovující parser vyprodukuje z naformátované i minifikované verze stejný datový model.
O kolik se XML po minifikaci zmenší?
Úspory závisí na tom, jak bylo původní XML naformátováno. Silně odsazené XML s komentáři se typicky zmenší o 20–40 %. Dokument, který je již kompaktní, může ztratit pouze 5–10 %. Přesné zmenšení zjistíte porovnáním počtu bajtů vstupu a výstupu.
Může minifikace poškodit mé XML?
Pokud minifier odstraňuje pouze mezery mezi značkami (nevýznamné mezery) a komentáře, sémantika dokumentu zůstane stejná. Jednou hraniční situací jsou sekce xml:space="preserve", kde jsou mezery uvnitř textových uzlů smysluplné. Správný minifier tuto direktivu respektuje a tyto sekce ponechá nedotčené.
Jaký je rozdíl mezi minifikací XML a kompresí XML?
Minifikace upravuje samotný XML text odstraněním znaků, které nepřenášejí žádná data. Komprese (gzip, Brotli) kóduje celý datový proud bajtů do menšího binárního formátu, který musí být před parsováním dekomprimován. Minifikace a komprese se vzájemně doplňují: nejprve minifikujte, poté komprimujte pro přenos.
Mám XML minifikovat před uložením do databáze?
U velkých objemů XML dat minifikace před uložením snižuje využití disku a urychluje čtení. U konfiguračních souborů nebo šablon, které vývojáři upravují ručně, uložte naformátovanou verzi a minifikujte při build time nebo při přenosu. Kompromis spočívá v čitelnosti versus efektivitě úložiště. Vyhněte se minifikaci XML, které bude auditováno, porovnáváno ve správě verzí nebo ručně aktualizováno operačními týmy — zachování formátování v těchto případech ušetří mnohem více času, než kolik je hodnota ušetřeného místa.
Podporuje xmllint minifikaci?
Ano. Spuštění xmllint --noblanks input.xml odstraní nevýznamné mezery. Ve výchozím nastavení neodstraňuje komentáře. Chcete-li odstranit i komentáře, přesměrujte výstup přes xmlstarlet ed -d '//comment()' nebo použijte vlastní XSLT, které odstraňuje uzly komentářů.
Jak minifikace ovlivňuje výkon parsování XML?
Minifikované XML se parsuje rychleji, protože parser zpracovává méně bajtů a nenaráží na textové uzly obsahující pouze mezery. Rozdíl je nejpatrnější u velkých dokumentů (1 MB a více) a u streamovacích parserů, kde každý extra uzel přidává k režii průchodu.