ToolDeck

Validatore XML

Valida la sintassi XML e controlla gli errori di ben-formazione

Prova un esempio

Input XML

Esegue in locale · Sicuro per incollare segreti

Cos'è la validazione XML?

Un validatore XML verifica se un documento XML rispetta le regole strutturali definite dalla specifica XML 1.0 (W3C Recommendation, quinta edizione). Come minimo, questo validatore XML conferma che un documento è ben formato: ha un singolo elemento radice, tutti i tag sono correttamente annidati e chiusi, i valori degli attributi sono tra virgolette e i caratteri riservati utilizzano le entità predefinite. Un documento che non supera uno di questi controlli causerà errori nei parser XML anziché produrre silenziosamente un output errato.

La distinzione tra ben-formazione e validità è importante. Un documento XML ben formato soddisfa le regole sintattiche della specifica XML stessa. Un documento XML valido va oltre: è anche conforme ai vincoli definiti in uno schema esterno, come un DTD (Document Type Definition), un XSD (XML Schema Definition) o uno schema Relax NG. Questo strumento verifica la ben-formazione, il primo e più comune passo di validazione. Senza di essa, nessun processo a valle può procedere.

La validazione XML intercetta gli errori prima che raggiungano la produzione. Tag non chiusi, nomi di elementi non corrispondenti, ampersand senza escape e attributi duplicati sono tra gli errori più comuni nell'XML modificato a mano. I parser nei diversi linguaggi gestiscono questi errori in modi diversi: alcuni falliscono silenziosamente, altri restituiscono risultati parziali e altri ancora lanciano eccezioni. Eseguire prima l'XML attraverso un validatore elimina questa ambiguità e fornisce una risposta chiara di successo o fallimento con i dettagli sulla posizione dell'errore.

Perché usare un validatore XML online?

Rilevare tempestivamente gli errori di sintassi XML previene i guasti a cascata nelle applicazioni che consumano dati XML. Un validatore basato su browser fornisce un feedback immediato senza dover installare strumenti da riga di comando o configurare plugin per l'IDE.

Rilevamento istantaneo degli errori
Incolla il tuo XML e ottieni un risultato di successo o fallimento con la posizione esatta dell'errore in meno di un secondo. Nessuna attesa per pipeline di build o configurazione di strumenti CLI.
🔒
Elaborazione privacy-first
Tutto il parsing e la validazione avviene nel browser tramite l'API DOMParser. Il tuo XML non lascia mai la tua macchina e non viene mai trasmesso ad alcun server.
🎯
Segnalazione precisa degli errori
Visualizza la riga e la colonna esatte in cui la validazione fallisce, insieme a una descrizione dell'errore. È più rapido che leggere uno stack trace da un parser nel codice della tua applicazione.
📋
Nessun account o installazione richiesta
Apri la pagina, incolla il tuo XML e visualizza il risultato. Nessun modulo di registrazione, nessun software desktop, nessuna estensione del browser.

Casi d'uso del Validatore XML

Sviluppo frontend
Valida i file SVG e i frammenti XHTML prima di incorporarli in componenti React o Vue. Un singolo tag non chiuso in un SVG può rompere l'intero albero dei componenti.
Ingegneria backend
Controlla le risposte SOAP, i payload XML-RPC e i feed RSS/Atom provenienti da API di terze parti. Valida la risposta grezza prima di scrivere la logica di deserializzazione, per evitare di debuggare eccezioni del parser a runtime.
DevOps e CI/CD
Verifica che i file Maven pom.xml, .csproj o Ant build siano ben formati dopo modifiche automatizzate. Un errore di sintassi in una configurazione di build può causare il fallimento dell'intera pipeline con un messaggio di errore criptico.
QA e testing
Valida le fixture XML di test e i file di output attesi prima di eseguire i test di integrazione. Le fixture non valide causano falsi negativi che sprecano tempo di debug.
Ingegneria dei dati
Controlla le esportazioni XML da database, portali open-data governativi e pipeline ETL. Validare la struttura prima di scrivere query XPath o trasformazioni XSLT previene sprechi di lavoro su dati sorgente non validi.
Apprendimento di XML
Gli studenti che seguono i tutorial XML o XSLT del W3C possono incollare i file di esercizio nel validatore per controllare la sintassi. I messaggi di errore indicano il problema esatto, accelerando il ciclo di apprendimento.

Regole di ben-formazione XML

La specifica XML 1.0 definisce un insieme rigoroso di regole sintattiche. Un documento deve soddisfarle tutte per essere considerato ben formato. La tabella seguente elenca ciascuna regola, i suoi requisiti e un esempio corretto. La maggior parte degli errori di validazione riconduce a una di queste regole.

RegolaRequisitoEsempio Corretto
Single root elementDocument must have exactly one root<root>...</root>
Matched tagsEvery opening tag needs a closing tag<p>text</p>
Proper nestingTags must close in reverse order of opening<a><b>...</b></a>
Quoted attributesAttribute values must be in single or double quotes<el attr="val"/>
Entity escapingReserved characters must use predefined entities&lt; &gt; &amp; &quot; &apos;
Case sensitivityTag names are case-sensitive: <A> is not </a><Book>...</Book>
No duplicate attributesEach attribute name must appear once per element<el a="1" b="2"/>
Valid XML declarationIf present, must be the very first line<?xml version="1.0"?>

Ben-formato vs. DTD-valido vs. Schema-valido

La validazione XML ha tre livelli. Questo strumento verifica il primo (ben-formazione), che è un prerequisito per gli altri due.

Ben-formato
Soddisfa le regole sintattiche di XML 1.0: singola radice, tag corrispondenti, attributi tra virgolette, annidamento corretto. Ogni parser XML verifica questo per primo. Se un documento non è ben formato, non è XML.
DTD-valido
Conforme a una Document Type Definition che specifica quali elementi e attributi sono consentiti, il loro ordine e la loro cardinalità. I DTD sono dichiarati inline o tramite un riferimento DOCTYPE. La validazione DTD è comune nei sistemi legacy e in XHTML.
Schema-valido (XSD / Relax NG)
Conforme a un XML Schema Definition (XSD) o a uno schema Relax NG. Questi schemi supportano tipi di dati (integer, date, URI), namespace e modelli di contenuto complessi. La validazione XSD è standard nei web service SOAP, nei dati sanitari HL7 e nell'integrazione enterprise.

Esempi di codice

Valida XML a livello programmatico in diversi linguaggi. Ogni esempio verifica la ben-formazione e restituisce il messaggio di errore se il documento non è valido.

JavaScript (DOMParser)
function validateXML(xmlString) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xmlString, 'application/xml')
  const error = doc.querySelector('parsererror')
  if (error) {
    return { valid: false, message: error.textContent }
  }
  return { valid: true, message: 'Well-formed XML' }
}

validateXML('<root><item>hello</item></root>')
// → { valid: true, message: "Well-formed XML" }

validateXML('<root><item>hello</root>')
// → { valid: false, message: "Opening and ending tag mismatch..." }
Python
import xml.etree.ElementTree as ET

def validate_xml(xml_string):
    try:
        ET.fromstring(xml_string)
        return True, "Well-formed XML"
    except ET.ParseError as e:
        return False, str(e)

valid, msg = validate_xml('<root><item>hello</item></root>')
# → (True, "Well-formed XML")

valid, msg = validate_xml('<root><item>hello</root>')
# → (False, "mismatched tag: line 1, column 27")

# With lxml — also supports XSD schema validation
from lxml import etree
schema = etree.XMLSchema(etree.parse('schema.xsd'))
doc = etree.fromstring(b'<root><item>hello</item></root>')
schema.validate(doc)  # → True or False
Go
package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

func validateXML(raw string) error {
    decoder := xml.NewDecoder(strings.NewReader(raw))
    for {
        _, err := decoder.Token()
        if err != nil {
            if err.Error() == "EOF" {
                return nil
            }
            return err
        }
    }
}

func main() {
    err := validateXML("<root><item>hello</item></root>")
    fmt.Println(err) // → <nil>

    err = validateXML("<root><item>hello</root>")
    fmt.Println(err) // → XML syntax error: unexpected end element </root>
}
CLI (xmllint)
# Check well-formedness (part of libxml2, pre-installed on macOS/Linux)
xmllint --noout document.xml
# Exit code 0 = valid, non-zero = errors printed to stderr

# Validate against an XSD schema
xmllint --noout --schema schema.xsd document.xml

# Validate against a DTD
xmllint --noout --dtdvalid schema.dtd document.xml

# Validate from stdin
echo '<root><unclosed>' | xmllint --noout -
# → :1: parser error : Premature end of data in tag unclosed line 1

Domande frequenti

Qual è la differenza tra XML ben formato e XML valido?
L'XML ben formato rispetta le regole sintattiche della specifica XML 1.0: un elemento radice, tag corrispondenti e correttamente annidati, attributi tra virgolette. L'XML valido va oltre, conformandosi anche a un DTD o a uno schema XSD che definisce quali elementi, attributi e tipi di dati sono consentiti. Un documento può essere ben formato ma non valido se ha una sintassi corretta ma viola un vincolo dello schema.
Un documento XML può essere valido ma non ben formato?
No. La ben-formazione è un prerequisito per la validità. Se un documento viola una regola sintattica XML (tag non chiuso, attributo senza virgolette, ecc.), i parser non riescono a costruire un albero da esso, quindi la validazione dello schema non può nemmeno iniziare. Correggi prima gli errori di ben-formazione, poi verifica la conformità allo schema.
Quali sono gli errori di validazione XML più comuni?
I cinque errori più frequenti sono: tag non chiusi o non corrispondenti, ampersand senza escape nel contenuto testuale, valori degli attributi senza virgolette, elemento radice mancante e maiuscole/minuscole errate nei nomi dei tag (XML distingue tra maiuscole e minuscole). La maggior parte di questi è causata dalla modifica manuale di XML o dalla concatenazione di stringhe nel codice anziché dall'uso di un serializzatore XML appropriato.
La validazione XML è uguale al linting XML?
Si sovrappongono ma non sono identici. La validazione verifica se un documento è conforme alla specifica XML (ben-formazione) o a uno schema (DTD/XSD). Il linting va tipicamente oltre, segnalando anche problemi di stile: indentazione inconsistente, dichiarazioni di namespace inutilizzate o valori di attributo predefiniti ridondanti. xmllint di libxml2 combina entrambi: --noout verifica la ben-formazione, mentre --schema aggiunge la validazione XSD.
In cosa differisce la validazione XML dalla validazione JSON?
XML ha una grammatica più rigida e complessa di JSON. XML richiede tag di apertura/chiusura corrispondenti, supporta attributi, namespace, contenuto misto (testo ed elementi insieme) e dispone di più linguaggi di schema (DTD, XSD, Relax NG, Schematron). La validazione JSON verifica la corrispondenza di parentesi graffe e quadre, le chiavi tra virgolette e il posizionamento delle virgole. JSON Schema esiste ma è più semplice di XSD. Un documento XML è tipicamente 2-3 volte più grande del JSON equivalente per gli stessi dati.
Questo strumento valida rispetto a schemi XSD o DTD?
Questo strumento verifica solo la ben-formazione: conferma che il tuo XML segue le regole sintattiche della specifica XML 1.0. Non valida rispetto a DTD o schemi XSD esterni. Per la validazione degli schemi, usa xmllint --schema dalla riga di comando, oppure lxml in Python, che supporta sia XSD che Relax NG.
Perché il mio XML non supera la validazione pur sembrando corretto?
Le cause invisibili più comuni sono: un byte order mark (BOM) prima della dichiarazione XML, un carattere anomalo dopo il tag di chiusura dell'elemento radice, un ampersand senza escape nel contenuto testuale (usa &amp; al suo posto) o un prefisso di namespace usato ma mai dichiarato. Copia il tuo XML in un visualizzatore hex o eseguilo con xmllint --noout per ottenere l'offset esatto in byte dell'errore.