Pular para o conteúdo

Verifique seu XML

Tags sem par, entidades não definidas, namespaces quebrados — encontrados e localizados com precisão pelo próprio parser XML do navegador. Nada fica armazenado.

  • Nunca armazenado
  • Sem fila, sem espera
  • Sem cadastro, sem marca d'água
Formatado

Cole o XML e ele é verificado enquanto você digita.

Como funciona

1

Cole seu XML

Ou solte o arquivo. Nada é enviado a lugar nenhum.

2

Leia o resultado

Bem formado, com um resumo do que há dentro. Ou a linha e a coluna exatas do primeiro problema.

3

Corrija e verifique de novo

Edite ali mesmo; a resposta é atualizada enquanto você digita.

Dois níveis diferentes, e qual deles é este

O XML define dois níveis de correção, e eles vivem sendo confundidos. Bem formado significa que o documento obedece à sintaxe do próprio XML: um único elemento raiz, toda tag fechada, aninhamento correto, caracteres válidos, e-comerciais e sinais de menor e maior escapados, valores de atributo entre aspas e nomes de atributo únicos dentro de cada elemento. Válido significa algo mais forte — que o documento também segue um schema específico, com os elementos certos na ordem certa e com os tipos de valor certos. Esta página verifica o primeiro. Todo parser XML recusa um documento que falha nisso, então é essa verificação que decide se um arquivo pode ser lido.

As falhas são previsíveis. Um & sem escape é de longe a mais comum — ele inicia uma referência de entidade, então uma URL com query string colada direto em um elemento quebra o documento. Um < solto no texto faz o mesmo. Depois vêm tags sem par ou sem fechamento, elementos fechados na ordem errada, dois elementos raiz e um caractere de controle perdido que o XML não permite de jeito nenhum, mesmo que fique invisível no arquivo.

Um DTD ou schema nunca é buscado, de propósito, e isso é uma propriedade de segurança, não um recurso que falta. Um documento XML pode citar uma entidade externa, e um parser que a resolve vai buscar o que ela aponta — um arquivo no disco, um endereço em uma rede interna. Essa é a vulnerabilidade XML External Entity, uma das classes de bug mais exploradas que existem, e a única defesa completa é não resolvê-las. Por isso nada aqui acessa nada externo, e o custo é que a validação por schema fica fora do escopo.

O que você recebe é a linha e a coluna exatas em que a análise parou. Como em qualquer parser, esse é o ponto em que o documento deixou de fazer sentido, não onde está o erro: uma tag sem fechamento costuma ser apontada na tag de fechamento inesperada que vem depois, às vezes centenas de linhas abaixo. A posição informada é de onde começar a procurar para cima, não onde editar.

Quando você precisa de outra coisa

Para validar contra um schema, o xmllint é a ferramenta de referência: xmllint --noout --schema schema.xsd file.xml para XSD, --relaxng para RELAX NG e --noout --valid para um DTD. Ele informa todas as violações em vez de parar na primeira, que é o que você quer quando um documento está realmente errado, e não apenas quebrado.

Quando há entrada não confiável, a configuração do parser importa mais do que o validador. Desative explicitamente a resolução de entidades externas e o processamento de DTD na linguagem que você usa — defusedxml em Python, LIBXML_NONET em PHP, processamento seguro em Java — porque vários parsers populares ainda resolvem entidades por padrão, e é no padrão que a vulnerabilidade mora.

Perguntas frequentes

Meu XML fica armazenado em algum lugar?

Não. Não há chamada ao servidor nem registro, e nada fica armazenado. Você pode se desconectar da internet depois que a página carregar, e ela continua funcionando. Isso importa aqui mais do que parece: o que as pessoas colam em um formatador online são respostas de API, arquivos de configuração e payloads de erro, e eles costumam carregar tokens, dados de clientes e nomes de hosts internos.

O que significa “bem formado”?

Que o documento obedece às regras do próprio XML: toda tag fechada, tags aninhadas na ordem certa, exatamente um elemento raiz, atributos entre aspas e todo & e < escapado ou fazendo parte de uma entidade válida. É a primeira de duas perguntas que você pode fazer sobre um XML. A segunda — se o documento segue um schema específico — é separada, e esta página não a responde.

Valida contra um DTD ou schema XSD?

Não. Esta ferramenta verifica se o documento é XML bem formado, que é a falha que a maioria das pessoas está realmente enfrentando. A validação por schema precisa do seu arquivo de schema e de um parser validador, e nenhum navegador tem um; dizer que faz isso aqui significaria enviar seu documento para um servidor ou simplesmente não verificar. Vale conhecer a diferença: um documento pode estar perfeitamente bem formado e ainda assim errado para o seu schema.

Quais são os erros de XML mais comuns?

Um e-comercial solto é o mais comum — & precisa ser escrito &amp;, mesmo dentro de uma URL, então uma query string colada direto em um elemento quebra o documento. Depois vêm: uma tag fechada na ordem errada, dois elementos raiz, uma entidade não definida como &nbsp; (que o HTML define e o XML não) e um prefixo de namespace usado sem ter sido declarado. Cada um é informado pelo nome, com a posição.

HTML é XML válido?

Normalmente não, e isso é normal, não um erro. O HTML permite tags sem fechamento como <br> e <li>, atributos sem aspas e e-comerciais soltos; o XML não permite nenhum deles. Se você precisa de um HTML que também seja XML válido, isso é XHTML, e ele precisa fechar todas as tags.

Existe limite de tamanho?

A memória disponível, e não um limite imposto por nós. Documentos de alguns megabytes são formatados na hora; os muito grandes ficam limitados pelo quanto cabe na memória de uma vez, não por nada do nosso lado.

Bom saber: Boa formação, não validação por schema. Tags balanceadas, aninhamento correto e caracteres válidos são verificados, e você recebe a linha e a coluna exatas do primeiro problema. Validar contra um DTD ou XSD exigiria buscá-lo, e isso é uma requisição de rede que esta página propositalmente nunca faz.

Coloque esta ferramenta no seu site

Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.