ToolDeck

Validador XML

Valida sintaxe XML e verifica erros de bem-formação

Experimente um exemplo

Entrada XML

Roda localmente · Seguro para colar segredos

O que é Validação de XML?

Um validador de XML verifica se um documento XML segue as regras estruturais definidas pela especificação XML 1.0 (Recomendação W3C, quinta edição). No mínimo, este validador confirma que um documento é bem-formado: possui um único elemento raiz, todas as tags estão corretamente aninhadas e fechadas, os valores de atributo estão entre aspas e os caracteres reservados utilizam entidades predefinidas. Um documento que falhe em qualquer uma dessas verificações fará com que os parsers de XML gerem erros em vez de produzir silenciosamente uma saída incorreta.

A distinção entre bem-formação e validade é importante. Um documento XML bem-formado satisfaz as regras de sintaxe da própria especificação XML. Um documento XML válido vai além: também está em conformidade com as restrições definidas em um esquema externo, como um DTD (Document Type Definition), XSD (XML Schema Definition) ou esquema Relax NG. Esta ferramenta verifica a bem-formação, a primeira e mais comum etapa de validação. Sem ela, nada no processo subsequente pode prosseguir.

A validação de XML detecta erros antes que eles cheguem à produção. Tags não fechadas, nomes de elementos incompatíveis, e comerciais sem escape e atributos duplicados estão entre os erros mais comuns em XML editado manualmente. Parsers em diferentes linguagens tratam esses erros de formas distintas: alguns falham silenciosamente, alguns retornam resultados parciais e outros lançam exceções. Passar seu XML por um validador elimina essa ambiguidade e fornece uma resposta clara de aprovação ou reprovação com detalhes sobre a localização do erro.

Por que Usar um Validador de XML Online?

Detectar erros de sintaxe XML cedo evita falhas em cascata em aplicações que consomem dados XML. Um validador no navegador oferece feedback imediato sem precisar instalar ferramentas de linha de comando ou configurar plugins de IDE.

Detecção instantânea de erros
Cole seu XML e obtenha o resultado em menos de um segundo, com a localização exata do erro. Sem esperar pipelines de build ou configurar ferramentas de CLI.
🔒
Processamento com privacidade em primeiro lugar
Todo o processamento e a validação acontecem no seu navegador via DOMParser API. Seu XML nunca sai da sua máquina e nunca é transmitido a nenhum servidor.
🎯
Relatório de erros preciso
Veja a linha e a coluna exatas onde a validação falha, junto com uma descrição do erro. É mais rápido do que ler um stack trace de um parser no código da sua aplicação.
📋
Sem conta ou instalação
Abra a página, cole seu XML e veja o resultado. Sem formulários de cadastro, sem software de desktop, sem extensões de navegador.

Casos de Uso do Validador de XML

Desenvolvimento frontend
Valide arquivos SVG e fragmentos XHTML antes de incorporá-los em componentes React ou Vue. Uma única tag não fechada em um SVG pode quebrar toda a árvore de componentes.
Engenharia backend
Verifique respostas SOAP, payloads XML-RPC e feeds RSS/Atom de APIs de terceiros. Valide a resposta bruta antes de escrever a lógica de desserialização para evitar depurar exceções do parser em tempo de execução.
DevOps e CI/CD
Verifique se arquivos Maven pom.xml, .csproj ou de build Ant estão bem-formados após edições automatizadas. Um erro de sintaxe em uma configuração de build pode falhar um pipeline inteiro com uma mensagem de erro enigmática.
QA e testes
Valide fixtures de teste XML e arquivos de saída esperada antes de executar testes de integração. Fixtures malformadas causam falsos negativos que desperdiçam tempo de depuração.
Engenharia de dados
Verifique exportações XML de bancos de dados, portais de dados abertos governamentais e pipelines de ETL. Validar a estrutura antes de escrever consultas XPath ou transformações XSLT evita esforço perdido com dados de origem quebrados.
Aprendendo XML
Estudantes que seguem os tutoriais de XML ou XSLT do W3C podem colar os arquivos de exercício no validador para verificar a sintaxe. As mensagens de erro apontam exatamente o problema, acelerando o aprendizado.

Regras de Bem-Formação do XML

A especificação XML 1.0 define um conjunto rígido de regras de sintaxe. Um documento deve satisfazer todas elas para ser considerado bem-formado. A tabela abaixo lista cada regra, o que ela exige e um exemplo correto. A maioria dos erros de validação remonta a uma dessas regras.

RegraRequisitoExemplo Correto
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"?>

Bem-Formado vs. Válido por DTD vs. Válido por Esquema

A validação de XML tem três níveis. Esta ferramenta verifica o primeiro (bem-formação), que é um pré-requisito para os outros dois.

Bem-formado
Satisfaz as regras de sintaxe XML 1.0: raiz única, tags correspondentes, atributos entre aspas, aninhamento correto. Todo parser XML verifica isso primeiro. Se um documento não está bem-formado, não é XML de forma alguma.
Válido por DTD
Está em conformidade com um Document Type Definition que especifica quais elementos e atributos são permitidos, sua ordem e cardinalidade. Os DTDs são declarados inline ou via referência DOCTYPE. A validação por DTD é comum em sistemas legados e no XHTML.
Válido por esquema (XSD / Relax NG)
Está em conformidade com um XML Schema Definition (XSD) ou esquema Relax NG. Esses esquemas suportam tipos de dados (inteiro, data, URI), namespaces e modelos de conteúdo complexos. A validação por XSD é padrão em serviços web SOAP, dados de saúde HL7 e integração empresarial.

Exemplos de Código

Valide XML programaticamente em diferentes linguagens. Cada exemplo verifica a bem-formação e retorna a mensagem de erro se o documento estiver malformado.

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

Perguntas Frequentes

Qual é a diferença entre XML bem-formado e XML válido?
O XML bem-formado segue as regras de sintaxe da especificação XML 1.0: um elemento raiz, tags correspondentes e corretamente aninhadas, atributos entre aspas. O XML válido vai além: também está em conformidade com um DTD ou esquema XSD que define quais elementos, atributos e tipos de dados são permitidos. Um documento pode ser bem-formado mas inválido se tiver sintaxe correta, mas violar uma restrição do esquema.
Um documento XML pode ser válido sem ser bem-formado?
Não. A bem-formação é um pré-requisito para a validade. Se um documento violar qualquer regra de sintaxe XML (tag não fechada, atributo sem aspas, etc.), os parsers não conseguem construir uma árvore a partir dele, portanto a validação por esquema sequer pode começar. Corrija os erros de bem-formação primeiro, depois verifique contra um esquema.
Quais são os erros de validação de XML mais comuns?
Os cinco erros mais frequentes são: tags não fechadas ou incompatíveis, e comerciais sem escape no conteúdo de texto, valores de atributo sem aspas, elemento raiz ausente e diferenças de capitalização nos nomes de tags (o XML diferencia maiúsculas de minúsculas). A maioria é causada por edição manual de XML ou por concatenação de strings no código em vez de usar um serializador XML adequado.
Validação de XML é o mesmo que lint de XML?
Eles se sobrepõem, mas não são idênticos. A validação verifica se um documento está em conformidade com a especificação XML (bem-formação) ou com um esquema (DTD/XSD). O lint tipicamente vai além, também sinalizando problemas de estilo: indentação inconsistente, declarações de namespace não utilizadas ou valores de atributo padrão redundantes. O xmllint do libxml2 combina ambos: --noout verifica a bem-formação, enquanto --schema adiciona a validação por XSD.
Como a validação de XML difere da validação de JSON?
O XML tem uma gramática mais rígida e complexa do que o JSON. O XML exige tags de abertura/fechamento correspondentes, suporta atributos, namespaces, conteúdo misto (texto e elementos juntos) e tem múltiplas linguagens de esquema (DTD, XSD, Relax NG, Schematron). A validação de JSON verifica o pareamento de chaves e colchetes, chaves entre aspas e posicionamento de vírgulas. O JSON Schema existe, mas é mais simples que o XSD. Um documento XML é tipicamente 2 a 3 vezes maior que o JSON equivalente para os mesmos dados.
Esta ferramenta valida contra esquemas XSD ou DTD?
Esta ferramenta verifica apenas a bem-formação: confirma que seu XML segue as regras de sintaxe da especificação XML 1.0. Ela não valida contra DTD ou esquemas XSD externos. Para validação por esquema, use xmllint --schema na linha de comando ou lxml em Python, que suporta tanto XSD quanto Relax NG.
Por que meu XML falha na validação quando parece correto?
As causas invisíveis mais comuns são: uma marca de ordem de byte (BOM) antes da declaração XML, um caractere perdido após a tag raiz de fechamento, um e comercial sem escape dentro do conteúdo de texto (use &amp; em vez disso), ou um prefixo de namespace que foi usado mas nunca declarado. Copie seu XML para um visualizador hexadecimal ou execute-o com xmllint --noout para obter o deslocamento exato em bytes do erro.