XML Formatter

Format dan cetak XML dengan indentasi rapi dan sorotan sintaks

Coba contoh

Input XML

XML Terformat

Berjalan lokal · Aman untuk menempel rahasia
XML yang telah diformat akan muncul di sini…

Apa itu Pemformatan XML?

Pemformatan XML (disebut juga pretty-printing XML atau beautifikasi XML) adalah proses menambahkan indentasi dan jeda baris yang konsisten ke dokumen XML agar struktur hierarkinya menjadi terlihat. XML mentah dari API, generator konfigurasi, atau serializer sering dikirimkan sebagai satu baris tanpa spasi di antara tag. Sebuah XML formatter mengurai dokumen tersebut menjadi pohon, lalu menyusunnya kembali dengan spasi yang teratur. Hasilnya jauh lebih mudah dibaca dan dipahami oleh pengembang mana pun, tanpa mengubah konten logis dokumen sama sekali.

Spesifikasi XML 1.0 (Rekomendasi W3C, edisi kelima) mendefinisikan tata bahasa ketat di mana setiap tag pembuka harus memiliki tag penutup yang sesuai atau bersifat self-closing, atribut harus dikutip, dan lima karakter (<, >, &, ", ') memerlukan escaping entitas. Sebuah formatter harus mematuhi aturan ini sambil hanya menyisipkan spasi tidak signifikan yang tidak mengubah kumpulan informasi (infoset) dokumen. Pemahaman aturan ini sangat penting agar hasil pemformatan tetap valid dan dapat diproses oleh semua parser XML yang sesuai standar.

XML yang telah diformat lebih mudah dibaca saat code review, lebih mudah dibandingkan dalam version control, dan lebih mudah di-debug saat suatu layanan mengembalikan data yang tidak terduga. Operasi pemformatan itu sendiri bersifat lossless: konten logis dokumen tetap identik, hanya tampilannya yang berubah. Alat seperti git diff dan platform review pull request hanya menampilkan baris yang dimodifikasi — XML dengan indentasi yang konsisten memastikan diff tersebut mencerminkan perubahan nyata, bukan sekadar kebisingan reformatting.

Before · xml
After · xml
<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>

Mengapa Menggunakan XML Formatter Online?

Memformat XML secara manual rentan terhadap kesalahan dan lambat, terutama untuk dokumen dengan nesting dalam atau namespace campuran. Sebuah formatter berbasis browser memberikan hasil yang terformat dalam waktu kurang dari satu detik, terlepas dari ukuran file. Tidak seperti alat desktop atau utilitas baris perintah, formatter ini tidak memerlukan instalasi atau konfigurasi apapun — cukup buka halaman dan langsung mulai bekerja.

Pretty-print instan
Tempel atau ketik XML dan dapatkan output dengan indentasi langsung. Tidak perlu menunggu instalasi alat CLI atau menjalankan langkah build.
🔒
Pemrosesan mengutamakan privasi
Semua parsing dan pemformatan terjadi di browser Anda menggunakan DOMParser API. XML Anda tidak pernah meninggalkan perangkat Anda dan tidak pernah dikirim ke server mana pun.
🎨
Indentasi yang dapat dikonfigurasi
Pilih antara indentasi 2 spasi, 4 spasi, atau tab untuk mencocokkan standar coding proyek Anda tanpa perlu mengedit file konfigurasi.
📋
Tidak perlu akun atau instalasi
Buka halaman, tempel XML Anda, dan salin hasilnya. Tidak ada formulir pendaftaran, tidak ada perangkat lunak desktop, tidak ada ekstensi browser.

Kasus Penggunaan XML Formatter

Pengembangan frontend
Periksa markup SVG atau fragmen XHTML yang dikembalikan oleh CMS. Memformat output mentah memungkinkan Anda menemukan atribut tertentu dan grup bersarang dengan cepat.
Rekayasa backend
Debug respons SOAP, feed RSS, atau payload XML-RPC dari layanan pihak ketiga. Output yang telah di-pretty-print memungkinkan Anda melacak elemen yang hilang atau namespace yang salah.
DevOps dan CI/CD
Baca file Maven pom.xml, skrip build Ant, atau file proyek .csproj yang telah dibuat oleh mesin tanpa indentasi. Format sebelum di-commit untuk menjaga diff tetap bersih.
QA dan pengujian
Bandingkan payload XML yang diharapkan vs. aktual dalam pengujian integrasi. Memformat kedua sisi ke gaya indentasi yang sama menghilangkan false negative yang disebabkan oleh perbedaan spasi.
Rekayasa data
Periksa ekspor XML dari database, pipeline ETL, atau portal data terbuka pemerintah. XML yang terformat mengungkapkan struktur record sebelum Anda menulis transformasi XSLT atau kueri XPath.
Belajar XML
Mahasiswa yang mengikuti tutorial XML W3C dapat menempel file latihan ke dalam formatter untuk memverifikasi bahwa nesting dan sintaks atribut mereka sudah benar.

Referensi Entitas Bawaan XML

XML mereservasi lima karakter untuk sintaksnya. Ketika karakter-karakter ini muncul sebagai konten teks literal atau nilai atribut, karakter tersebut harus diganti dengan referensi entitas bawaan. Sebuah formatter yang benar mempertahankan entitas-entitas ini selama pretty-printing.

KarakterPeran dalam XMLEntitas
<Start of tag&lt;
>End of tag&gt;
&Start of entity&amp;
"Attribute delimiter&quot;
'Attribute delimiter&apos;

Perbandingan Gaya Indentasi XML

Tidak ada standar tunggal untuk indentasi XML. Pilihan bergantung pada konvensi tim Anda dan alat dalam pipeline Anda. Berikut adalah tiga gaya yang paling umum.

2 spasi (direkomendasikan)
Pilihan paling umum untuk XML terkait web: SVG, XHTML, SOAP, konfigurasi Spring. Menjaga dokumen dengan nesting dalam tetap ringkas. Digunakan secara default di sebagian besar formatter online dan IDE.
4 spasi
Lebih disukai dalam ekosistem Java (Maven, Ant, manifest Android) di mana file jarang melebihi 3-4 tingkat nesting. Cocok dengan indentasi default kode Java dan C#.
Karakter tab
Memungkinkan setiap pengembang mengatur lebar visual mereka sendiri di editor. Umum dalam proyek lama dan beberapa tooling Microsoft (.csproj, .nuspec). Menghasilkan ukuran file yang lebih kecil dibandingkan spasi.

Contoh Kode: Format XML Secara Programatik

Ketika Anda perlu memformat XML di dalam skrip atau proses build, setiap bahasa utama memiliki opsi bawaan atau dari pustaka standar. Berikut adalah contoh yang dapat Anda salin langsung.

JavaScript (DOM API)
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>
Python
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())
Go
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>"
CLI (xmllint)
# 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

Pertanyaan yang Sering Diajukan

Apakah pemformatan XML mengubah makna dokumen?
Tidak. Pemformatan XML hanya menambah atau menghapus spasi tidak signifikan di antara tag. XML Information Set (infoset) tetap identik. Satu pengecualian: jika skema Anda menggunakan xml:space="preserve" pada elemen tertentu, sebuah formatter seharusnya membiarkan elemen tersebut tidak disentuh, dan alat ini menghormati hal itu.
Apa perbedaan antara pemformatan XML dan validasi XML?
Pemformatan menambahkan indentasi dan jeda baris agar XML mudah dibaca. Validasi memeriksa apakah dokumen sesuai dengan skema (XSD, DTD, atau RelaxNG). Sebuah dokumen bisa well-formed tetapi tidak valid terhadap skemanya. Gunakan formatter ini untuk keterbacaan dan alat XML Validator untuk kepatuhan skema.
Bisakah saya memformat XML dengan namespace?
Ya. DOMParser browser menangani namespace XML secara native. Prefiks namespace, deklarasi namespace default (xmlns), dan nama atribut berkualifikasi semuanya dipertahankan selama pemformatan. Formatter tidak menambah, menghapus, atau mengganti nama ikatan namespace apa pun.
Seberapa besar file XML yang bisa saya format di browser?
Pemformatan berbasis browser bekerja baik untuk dokumen hingga sekitar 10 MB. Lebih dari itu, pohon DOM menghabiskan memori yang signifikan dan UI mungkin menjadi tidak responsif. Untuk file yang sangat besar, gunakan alat CLI seperti xmllint --format, yang memproses XML sebagai stream.
Mengapa XML yang diformat saya memiliki deklarasi XML yang ditambahkan?
Beberapa formatter menambahkan <?xml version="1.0"?> saat menyusun ulang pohon DOM. Deklarasi ini opsional dalam XML 1.0 ketika encoding adalah UTF-8. Jika Anda tidak menginginkannya, hapus baris pertama dari output. Deklarasi ini tidak memengaruhi parsing oleh prosesor XML apa pun yang sesuai.
Apakah pemformatan XML sama dengan minifikasi XML?
Keduanya adalah operasi yang berlawanan. Pemformatan menambahkan spasi untuk meningkatkan keterbacaan. Minifikasi menghapus semua spasi yang tidak penting untuk mengurangi ukuran file. Kedua operasi bersifat lossless terhadap infoset XML. Jika Anda perlu meminifikasi XML, gunakan alat XML Minifier.
Apa perbedaan antara pemformatan XML dan HTML?
XML bersifat ketat: setiap tag harus ditutup, nilai atribut harus dikutip, dan dokumen harus memiliki tepat satu elemen root. HTML (khususnya HTML5) bersifat lebih toleran: tag penutup opsional, atribut tanpa kutipan, dan elemen void seperti &lt;br&gt; semuanya valid. Sebuah XML formatter akan menolak XML yang tidak valid, sementara HTML formatter mentolerir sintaks yang tidak diizinkan oleh XML.