ToolDeck

XML Küçültücü

Boşlukları ve yorumları kaldırarak XML'yi küçültün

Örnek dene

XML Girdisi

Küçültülmüş XML

Yerel olarak çalışır · Gizli bilgi yapıştırmak güvenlidir
Küçültülmüş XML burada görüntülenecektir…

XML Küçültme Nedir?

XML küçültme, bir XML belgesinin anlamını değiştirmeden gereksiz tüm karakterleri kaldırma işlemidir. Bir XML küçültücü, etiketler arasındaki boşlukları siler, yorumları kaldırır, satır sonlarını ortadan kaldırır ve girintileri daraltarak sıkışık, tek satırlık bir çıktı üretir. Sonuç, ayrıştırıcıların orijinal biçimli sürümle aynı şekilde okuduğu ve aynı veri modelini oluşturduğu bir XML dizesidir.

XML 1.0 spesifikasyonu (W3C Recommendation, Fifth Edition), boşluk işleme kurallarını 2.10. bölümde tanımlar. Etiketler arasında anlamsal değeri olmayan boşluklara "önemsiz boşluk" denir. XML işlemcilerinin bunları atmasına izin verilir. Metin içeriği içindeki boşluklar ise, üst öğe xml:space="default" bildirmediği sürece varsayılan olarak anlamlıdır. Doğru bir XML küçültücü bu iki durumu birbirinden ayırt eder ve yalnızca güvenli şekilde kaldırılabilecek olanları siler.

Küçültme, sıkıştırmadan farklıdır. Gzip veya Brotli, aktarım katmanında boyutu küçültür ve ayrıştırmadan önce sıkıştırmayı açma gerektirir. Küçültme ise ham belge boyutunu kendisini azaltır; bu nedenle XML geçerliliğini korur ve herhangi bir ayrıştırıcı tarafından bir sıkıştırma açma adımı gerekmeksizin okunabilir. Uygulamada, sıkıştırmadan önce küçültmek en iyi sonucu verir: önce gereksiz karakterler kaldırılır, ardından sıkıştırma algoritması daha sıkışık bir girdide çalışır.

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>

Neden XML Küçültücü Kullanmalısınız?

Girintili ve yorumlu biçimlendirilmiş XML, geliştirme ve kod incelemesi için idealdir. Depolama, iletim ve makine tüketimi için ise bu ekstra biçimlendirme hiçbir fayda sağlamadan bayt ekler. Bir XML küçültücü bu açığı kapatır.

Transfer boyutunu anında azaltın
Tipik bir XML yapılandırma dosyasından boşlukları ve yorumları kaldırmak boyutu %20-40 oranında küçültür. SOAP yükleri ve büyük beslemeler için tasarruf genellikle %30'u aşar; bu da bant genişliği maliyetlerini ve API yanıt sürelerini düşürür.
🔒
İstemci tarafında çalışır, yükleme yok
Küçültücü, tarayıcıda yerel DOMParser kullanılarak çalışır. Sunucuya hiçbir veri gönderilmez. İşlem, XML'nin ne içerdiğinden bağımsız olarak yerel olarak gerçekleşir.
📦
Kayıt veya kurulum gerektirmez
XML'nizi yapıştırın, küçültülmüş çıktıyı alın. Hesap oluşturma, yüklenecek CLI aracı veya bağımlılık yok. Modern tarayıcısı olan her cihazda çalışır.
🔧
Her iyi biçimlendirilmiş XML'yi destekler
Ad alanlarını, CDATA bölümlerini, işleme talimatlarını ve derinden iç içe geçmiş yapıları destekler. Girdi iyi biçimlendirilmiş XML ise küçültücü geçerli küçültülmüş çıktı üretir.

XML Küçültücü Kullanım Senaryoları

Ön Uç Geliştirme
HTML veya CSS'ye gömülü SVG dosyalarını küçültün. SVG işaretlemesinden boşluk ve yorumları kaldırmak, işlenen grafiği değiştirmeden sayfa ağırlığını azaltır. Mütevazı bir SVG ikon seti bile birkaç kilobayt tasarruf sağlayabilir.
Arka Uç API Optimizasyonu
SOAP yanıtlarını ve XML-RPC yüklerini istemcilere göndermeden önce küçültün. Küçültülmüş XML daha hızlı ayrıştırılır ve yüksek verimli hizmetlerde ağ gecikmesini azaltır. Kazanç, yanıtların aktarım katmanında henüz sıkıştırılmadığı durumlarda en büyüktür.
DevOps ve CI/CD İş Akışları
Docker görüntülerindeki ve dağıtım paketlerindeki yapı boyutunu azaltmak için derleme iş akışlarında XML yapılandırma dosyalarını (pom.xml, web.xml, .csproj) küçültün. Daha küçük görüntüler, daha hızlı çekme süreleri ve daha düşük konteyner kayıt defteri depolama maliyetleri anlamına gelir.
QA ve Test
Karşılaştırmadan önce XML test fikstürlerini küçülterek normalleştirin. Biçimlendirme farklılıklarını kaldırmak, yalnızca boşluktan kaynaklanan sahte test başarısızlıklarını önler. Kanonik küçültülmüş fikstürler aynı zamanda sürüm kontrol farklarını incelemeyi de kolaylaştırır.
Veri Mühendisliği
Büyük XML veri beslemelerini (RSS, Atom, XBRL) veritabanlarında veya mesaj kuyruklarında depolamadan önce sıkıştırın. Daha küçük yükler, daha düşük depolama maliyetleri ve daha hızlı kuyruk verimi anlamına gelir. Büyük ölçekte, besleme boyutunda %20'lik bir azalma hesaplama ve G/Ç maliyetlerinde hızla birikir.
XML Yapısını Öğrenmek
Öğrenciler, XML'yi küçültüp yeniden biçimlendirerek ayrıştırıcıların önemsiz boşlukları neden yok saydığını ve belge yapısının görsel biçimlendirmesinden neden bağımsız olduğunu anlayabilir. Bu alıştırma, soyut spesifikasyon kurallarını somut ve anında gözlemlenebilir hale getirir.

XML Küçültmenin Kaldırdıkları

Bir XML belgesindeki her şey güvenli şekilde kaldırılamaz. Bu başvuru tablosu, kaldırılabilecek her içerik türünü ve atmanın her zaman mı yoksa kullanım durumunuza koşullu mu güvenli olduğunu gösterir.

ÖğeÖrnekGüvenlik
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

Küçültme, Gzip ve İkili Formatlar Karşılaştırması

Küçültme, sıkıştırma ve ikili kodlama, boyut sorununu farklı katmanlarda ele alır. Küçültme, çıktıyı geçerli, insan tarafından okunabilir XML olarak tutar. Sıkıştırma (gzip, Brotli) daha fazla küçültür ancak ayrıştırmadan önce bir sıkıştırma açma adımı gerektirir. İkili formatlar en ileriye gider; ancak bağlantının her iki ucunun da uyumlu bir kodlayıcı/çözücüye ihtiyacı vardır — ağırlıklı olarak gömülü sistemler veya WSDL'ye dayalı kurumsal hizmetler için pratiktir.

XML Küçültme
Önemsiz boşlukları, yorumları ve satır sonlarını kaldırır. Çıktı hâlâ geçerli XML'dir, herhangi bir ayrıştırıcı tarafından okunabilir. Tipik küçülme: %20-40. Sıkıştırma açma adımı gerekmez.
Gzip / Brotli Sıkıştırma
Bayt akışına bir sıkıştırma algoritması uygular. Küçültme üzerine tipik küçülme: %60-80. XML ayrıştırılmadan önce sıkıştırmanın açılması gerekir. HTTP'de Content-Encoding aracılığıyla standarttır.
İkili Formatlar (EXI, Fast Infoset)
XML Infoset'i ikili bir gösterimde kodlar. Tipik küçülme: %80-95. Her iki tarafta da uyumlu bir kodlayıcı/çözücü gerektirir. Gömülü sistemler ve WSDL'ye dayalı hizmetler gibi kısıtlı ortamlarda kullanılır.

Kod Örnekleri

XML'yi programatik olarak küçültmek her dilde aynı örüntüyü izler: belgeyi bir ağaca ayrıştırın, isteğe bağlı olarak yorum düğümlerini kaldırın, ardından girintisiz serileştirin.

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"

Sık Sorulan Sorular

Küçültülmüş XML hâlâ geçerli XML midir?
Evet. Küçültme yalnızca önemsiz boşlukları ve yorumları kaldırır. Elde edilen belge, orijinalle aynı XML 1.0 veya 1.1 spesifikasyonuna uygundur. Uyumlu herhangi bir ayrıştırıcı, hem biçimlendirilmiş hem de küçültülmüş sürümden aynı veri modelini oluşturur.
XML küçültme sonrası ne kadar küçülür?
Tasarruf, orijinalin nasıl biçimlendirildiğine bağlıdır. Yoğun girintili ve yorumlu XML genellikle %20-40 küçülür. Zaten sıkışık bir belge yalnızca %5-10 kaybedebilir. Tam küçülmeyi ölçmek için girdi ve çıktının bayt sayısını karşılaştırın.
Küçültme XML'imi bozabilir mi?
Küçültücü yalnızca etiketler arasındaki boşlukları (önemsiz boşluk) ve yorumları kaldırıyorsa belge semantiği aynı kalır. Tek uç durum, metin düğümlerindeki boşluğun anlamlı olduğu xml:space="preserve" bölümleridir. Doğru bir küçültücü bu direktife saygı gösterir ve bu bölümlere dokunmaz.
XML küçültme ile XML sıkıştırma arasındaki fark nedir?
Küçültme, hiçbir veri taşımayan karakterleri kaldırarak XML metnini düzenler. Sıkıştırma (gzip, Brotli), ayrıştırmadan önce sıkıştırmanın açılması gereken daha küçük bir ikili formata tüm bayt akışını kodlar. Küçültme ve sıkıştırma birbirini tamamlar: önce küçültün, ardından aktarım için sıkıştırın.
XML'yi veritabanında depolamadan önce küçültmeli miyim?
Büyük hacimlerdeki XML verileri için depolamadan önce küçültmek disk kullanımını azaltır ve okuma hızını artırır. Geliştiricilerin elle düzenlediği yapılandırma dosyaları veya şablonlar için biçimlendirilmiş sürümü saklayın ve derleme sırasında ya da aktarım üzerinde küçültün. Bu denge, okunabilirliğe karşı depolama verimliliği arasındadır. Denetlenecek, sürüm kontrolünde fark alınacak veya operasyon ekiplerince elle güncellenecek XML'yi küçültmekten kaçının — bu durumlarda biçimlendirmeyi korumak, depolama tasarrufundan çok daha değerlidir.
xmllint küçültmeyi destekler mi?
Evet. xmllint --noblanks input.xml komutunu çalıştırmak önemsiz boşlukları kaldırır. Yorumları varsayılan olarak kaldırmaz. Yorumları da kaldırmak için önce xmlstarlet ed -d '//comment()' üzerinden yönlendirin veya yorum düğümlerini kaldıran özel bir XSLT kullanın.
Küçültme XML ayrıştırma performansını nasıl etkiler?
Küçültülmüş XML daha hızlı ayrıştırılır çünkü ayrıştırıcı daha az bayt işler ve yalnızca boşluktan oluşan metin düğümleriyle karşılaşmaz. Fark, büyük belgelerde (1 MB+) ve akış ayrıştırıcılarında en belirgindir; bu ortamlarda her ekstra düğüm geçiş yüküne katkıda bulunur.