XML Biçimlendirici
XML'yi biçimlendir ve sözdizimi vurgulaması ile göster
XML Girdisi
Biçimlendirilmiş XML
XML Biçimlendirme Nedir?
XML biçimlendirme (XML güzelleştirme veya XML girintileme olarak da bilinir), bir XML belgesine tutarlı girinti ve satır sonları ekleyerek hiyerarşik yapısının görünür hale getirilmesi işlemidir. API'lerden, yapılandırma üreticilerinden veya serileştiricilerden gelen ham XML, çoğunlukla etiketler arasında boşluk olmaksızın tek satır halinde iletilir. Bir XML biçimlendirici, belgeyi bir ağaca ayrıştırır ve ardından öngörülebilir boşluklarla yeniden serileştirir. Sonuç görsel olarak anlaşılır ve çok daha kolay okunabilir olur; belgenin mantıksal içeriği ise hiçbir şekilde değişmez. Bu dönüşüm hızlı, güvenli ve tamamen kayıpsızdır.
XML 1.0 belirtimi (W3C Önerisi, beşinci sürüm), her açılış etiketinin eşleşen bir kapanış etiketine sahip olması veya kendi kendini kapatması gerektiğini, özniteliklerin tırnak içinde belirtilmesi gerektiğini ve beş karakterin (<, >, &, ", ') varlık kaçışı gerektirdiğini tanımlayan katı bir dilbilgisi ortaya koyar. Bir biçimlendirici, belgenin bilgi kümesini (infoset) değiştirmeyen yalnızca anlamsız boşluk eklerken bu kurallara uymak zorundadır. Bu kuralların doğru anlaşılması, biçimlendirilmiş XML'in geçerli kalmasını ve tüm uyumlu XML işlemcileri tarafından sorunsuz işlenebilmesini garanti eder.
Biçimlendirilmiş XML, kod incelemesinde okunması daha kolay, sürüm kontrolünde fark alınması daha kolay ve bir hizmet beklenmedik veri döndürdüğünde hata ayıklanması daha kolaydır. Biçimlendirme işleminin kendisi kayıpsızdır: belgenin mantıksal içeriği aynı kalır, yalnızca sunum değişir. git diff ve pull request inceleme platformları gibi araçlar yalnızca değiştirilen satırları gösterir — tutarlı biçimde girintilenen XML, bu farkların gerçek değişiklikleri yansıtmasını sağlar, yeniden biçimlendirme gürültüsünü değil. Ortak bir biçimlendirme standardını benimseyen ekipler, belge yapısını anlamak için daha az zaman harcar ve gerçek geliştirme çalışmalarına daha fazla odaklanabilir.
<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>Neden Çevrimiçi XML Biçimlendirici Kullanmalısınız?
XML'yi elle biçimlendirmek, özellikle derin iç içe geçme veya karışık ad alanları içeren belgeler söz konusu olduğunda hataya açık ve yavaştır. Tarayıcı tabanlı bir biçimlendirici, dosya boyutundan bağımsız olarak bir saniyenin altında biçimlendirilmiş sonuç verir. Masaüstü araçları veya komut satırı yardımcı programlarının aksine, kurulum veya yapılandırma gerektirmez — sayfayı açın ve hemen çalışmaya başlayın.
XML Biçimlendirici Kullanım Senaryoları
XML Önceden Tanımlanmış Varlık Başvurusu
XML, sözdizimi için beş karakteri ayırmıştır. Bu karakterler düz metin içeriği veya öznitelik değerlerinde yer aldığında önceden tanımlanmış varlık başvurularıyla değiştirilmelidir. Doğru bir biçimlendirici, güzelleştirme sırasında bu varlıkları korur.
| Karakter | XML'deki Rolü | Varlık |
|---|---|---|
| < | Start of tag | < |
| > | End of tag | > |
| & | Start of entity | & |
| " | Attribute delimiter | " |
| ' | Attribute delimiter | ' |
XML Girinti Stilleri Karşılaştırması
XML girintisi için tek bir standart yoktur. Seçim, ekibinizin kurallarına ve işlem hattınızdaki araçlara bağlıdır. İşte en yaygın üç stil.
Kod Örnekleri: XML'yi Programatik Olarak Biçimlendirme
XML'yi bir betik veya derleme sürecinde biçimlendirmeniz gerektiğinde, her büyük dilin yerleşik veya standart kütüphane seçeneği vardır. Python'da xml.dom.minidom modülü veya lxml kullanılabilir, Java'da javax.xml.transform girinti desteğiyle kullanılabilir ve Node.js'de xmldom veya prettier gibi kütüphaneler mevcuttur. Aşağıda doğrudan kopyalayabileceğiniz çalışan örnekler yer almaktadır.
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>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())
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>"# 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