ToolDeck

Formattatore XML

Formatta e abbellisce XML con evidenziazione della sintassi

Prova un esempio

Input XML

XML Formattato

Esegue in locale · Sicuro per incollare segreti
L'XML formattato apparirà qui…

Cos'è la formattazione XML?

La formattazione XML (chiamata anche pretty-printing o abbellimento XML) è il processo di aggiunta di indentazione e interruzioni di riga coerenti a un documento XML, in modo da rendere visibile la sua struttura gerarchica. L'XML grezzo proveniente da API, generatori di configurazione o serializzatori viene spesso prodotto come una singola riga senza spazi tra i tag. Un formattatore XML analizza il documento in un albero, poi lo ri-serializza con spaziatura prevedibile. Il risultato è visivamente chiaro e molto più facile da comprendere, senza che il contenuto logico del documento venga alterato in alcun modo.

La specifica XML 1.0 (W3C Recommendation, quinta edizione) definisce una grammatica rigida: ogni tag di apertura deve avere un tag di chiusura corrispondente o essere auto-chiudente, gli attributi devono essere tra virgolette, e cinque caratteri (<, >, &, ", ') richiedono il carattere di escape come entità. Un formattatore deve rispettare queste regole inserendo solo spazi non significativi che non alterano l'infoset del documento.

L'XML formattato è più facile da leggere durante la revisione del codice, più facile da confrontare nel controllo di versione e più facile da debuggare quando un servizio restituisce dati inattesi. L'operazione di formattazione è priva di perdite: il contenuto logico del documento rimane identico, cambia solo la presentazione. Strumenti come git diff e le piattaforme di revisione delle pull request mostrano solo le righe modificate — un XML con indentazione coerente garantisce che quei diff riflettano modifiche reali, non rumore di riformattazione.

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>

Perché usare un formattatore XML online?

Formattare l'XML a mano è lento e soggetto a errori, specialmente per documenti con annidamento profondo o namespace misti. Un formattatore basato su browser produce il risultato in meno di un secondo, indipendentemente dalla dimensione del file. A differenza degli strumenti desktop o delle utilità da riga di comando, non richiede installazione né configurazione: basta aprire la pagina e iniziare a lavorare immediatamente.

Pretty-print istantaneo
Incolla o digita XML e ottieni immediatamente un output indentato. Nessuna attesa per l'installazione di uno strumento CLI o l'esecuzione di un passaggio di build.
🔒
Elaborazione privacy-first
Tutto il parsing e la formattazione avviene nel browser tramite l'API DOMParser. Il tuo XML non lascia mai la tua macchina e non viene mai inviato a nessun server.
🎨
Indentazione configurabile
Scegli tra indentazione a 2 spazi, 4 spazi o tabulazione per allinearti agli standard del tuo progetto senza modificare file di configurazione.
📋
Nessun account o installazione richiesta
Apri la pagina, incolla il tuo XML e copia il risultato. Nessun modulo di registrazione, nessun software desktop, nessuna estensione del browser.

Casi d'uso del Formattatore XML

Sviluppo frontend
Ispeziona markup SVG o frammenti XHTML restituiti da un CMS. La formattazione dell'output grezzo consente di individuare rapidamente attributi specifici e gruppi annidati.
Ingegneria backend
Esegui il debug di risposte SOAP, feed RSS o payload XML-RPC di servizi di terze parti. L'output formattato consente di tracciare elementi mancanti o namespace errati.
DevOps e CI/CD
Leggi file Maven pom.xml, script di build Ant o file di progetto .csproj generati automaticamente senza indentazione. Formattali prima di eseguire il commit per mantenere i diff puliti.
QA e testing
Confronta i payload XML attesi con quelli effettivi nei test di integrazione. Formattare entrambi con lo stesso stile di indentazione elimina i falsi negativi causati da differenze di spazi.
Ingegneria dei dati
Ispeziona esportazioni XML da database, pipeline ETL o portali open-data governativi. L'XML formattato rivela la struttura dei record prima di scrivere una trasformazione XSLT o una query XPath.
Apprendimento di XML
Gli studenti che seguono i tutorial XML del W3C possono incollare i file di esercizio nel formattatore per verificare che l'annidamento e la sintassi degli attributi siano corretti.

Riferimento alle entità predefinite XML

XML riserva cinque caratteri per la sua sintassi. Quando questi caratteri compaiono come contenuto di testo letterale o come valori di attributo, devono essere sostituiti con riferimenti a entità predefinite. Un formattatore corretto preserva queste entità durante il pretty-printing.

CarattereRuolo in XMLEntità
<Start of tag&lt;
>End of tag&gt;
&Start of entity&amp;
"Attribute delimiter&quot;
'Attribute delimiter&apos;

Stili di indentazione XML a confronto

Non esiste uno standard unico per l'indentazione XML. La scelta dipende dalle convenzioni del team e dagli strumenti nella pipeline. Ecco i tre stili più comuni.

2 spazi (consigliato)
La scelta più comune per XML legato al web: SVG, XHTML, SOAP, configurazioni Spring. Mantiene compatti i documenti con annidamento profondo. Usato per impostazione predefinita nella maggior parte dei formattatori online e degli IDE.
4 spazi
Preferito negli ecosistemi Java (Maven, Ant, manifest Android) dove i file raramente superano 3-4 livelli di annidamento. Corrisponde all'indentazione predefinita del codice Java e C#.
Carattere di tabulazione
Permette a ogni sviluppatore di impostare la propria larghezza visiva nel proprio editor. Comune nei progetti legacy e in alcuni strumenti Microsoft (.csproj, .nuspec). Produce file di dimensioni inferiori rispetto agli spazi.

Esempi di codice: formattare XML a livello programmatico

Quando hai bisogno di formattare XML all'interno di uno script o di un processo di build, ogni linguaggio principale dispone di un'opzione integrata o nella libreria standard. In Python si usa il modulo xml.dom.minidom o lxml, in Java è disponibile javax.xml.transform con il supporto per la spaziatura, in Node.js ci sono librerie come xmldom o prettier. Di seguito trovi esempi funzionanti che puoi copiare direttamente.

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

Domande frequenti

La formattazione XML cambia il significato del documento?
No. La formattazione XML aggiunge o rimuove solo spazi non significativi tra i tag. L'XML Information Set (infoset) rimane identico. Un'eccezione: se il tuo schema usa xml:space="preserve" su certi elementi, un formattatore dovrebbe lasciare quegli elementi invariati, e questo strumento rispetta tale indicazione.
Qual è la differenza tra formattazione e validazione XML?
La formattazione aggiunge indentazione e interruzioni di riga per rendere l'XML leggibile. La validazione verifica se il documento è conforme a uno schema (XSD, DTD o RelaxNG). Un documento può essere ben formato ma non valido rispetto al suo schema. Usa questo formattatore per la leggibilità e il Validatore XML per la conformità allo schema.
Posso formattare XML con namespace?
Sì. Il DOMParser del browser gestisce i namespace XML nativamente. I prefissi di namespace, le dichiarazioni di namespace predefinite (xmlns) e i nomi di attributo qualificati vengono tutti preservati durante la formattazione. Il formattatore non aggiunge, rimuove o rinomina alcun binding di namespace.
Quanto grande può essere un file XML formattato nel browser?
La formattazione basata su browser funziona bene per documenti fino a circa 10 MB. Oltre tale soglia, il DOM tree consuma molta memoria e l'interfaccia potrebbe diventare non reattiva. Per file molto grandi, usa uno strumento CLI come xmllint --format, che elabora l'XML come flusso.
Perché il mio XML formattato ha una dichiarazione XML aggiunta?
Alcuni formattatori aggiungono <?xml version="1.0"?> durante la serializzazione del DOM tree. Questa dichiarazione è opzionale in XML 1.0 quando la codifica è UTF-8. Se non la desideri, rimuovi la prima riga dall'output. La dichiarazione non influisce sul parsing da parte di alcun processore XML conforme.
La formattazione XML è uguale alla minificazione XML?
Sono operazioni opposte. La formattazione aggiunge spazi per migliorare la leggibilità. La minificazione rimuove tutti gli spazi non essenziali per ridurre le dimensioni del file. Entrambe le operazioni sono prive di perdite rispetto all'infoset XML. Se hai bisogno di minificare l'XML, usa lo strumento Minificatore XML.
Qual è la differenza tra la formattazione XML e HTML?
XML è rigido: ogni tag deve essere chiuso, i valori degli attributi devono essere tra virgolette e il documento deve avere esattamente un elemento radice. HTML (in particolare HTML5) è permissivo: tag di chiusura opzionali, attributi senza virgolette ed elementi void come &lt;br&gt; sono tutti validi. Un formattatore XML rifiuterà l'XML non valido, mentre un formattatore HTML tollera sintassi che XML non consentirebbe.