Formatador e validador XML

Cole XML, formate com indentação adequada ou valide a sintaxe. Lida com atributos e namespaces. Sem upload.

  1. Cole seu XML na área de texto à esquerda.
  2. Clique em Formatar para fazer round-trip pelo fast-xml-parser e produzir XML indentado.
  3. Clique em Validar para verificar well-formedness sem modificar a entrada.
  4. Erros apontam a posição ofensora no documento.
O que ele faz?

Parseia XML com fast-xml-parser e re-emite com indentação consistente. A ordem dos atributos dentro de cada elemento é preservada; o aninhamento de elementos é preservado exatamente. Conteúdo misto (texto + elementos filhos) e namespaces (prefix:tag) são mantidos intactos. A saída é XML well-formed — mas well-formed não é o mesmo que válido (validade requer schema ou DTD, que esta ferramenta não verifica).

Exemplo

Entrada XML bagunçada:

<root version="1"><name>Ada</name><tags>math</tags><tags>logic</tags></root>

Saída formatada:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

Erros comuns de XML e como corrigi-los

Regras de well-formedness XML são mais rígidas que HTML. Os padrões abaixo cobrem a maioria das falhas do parser.

  • Tag não fechada. `<a><b></a>` é inválido — `<b>` deve ser fechada (`<b/>` ou `</b>` em algum lugar). XML não permite tags de fechamento opcionais estilo HTML.
  • Caso não corresponde. XML é case-sensitive — `<Foo></foo>` são dois nomes de tag diferentes. Combine o caso exatamente.
  • Caracteres especiais não escapados. Um `<`, `>`, `&` ou aspas literal dentro de texto ou valor de atributo deve ser escapado: `&lt;`, `&gt;`, `&amp;`, `&quot;`. Envolva dados com esses caracteres em CDATA: `<![CDATA[...]]>`.
  • Múltiplas raízes. XML requer exatamente um elemento raiz. `<a/><b/>` no nível superior é inválido — envolva: `<root><a/><b/></root>`.
  • Nome de elemento inválido. Nomes de elementos não podem começar com dígito, conter espaços, ou usar caracteres reservados (`< > & " \'`). Nomes começando com `xml` (qualquer caso) são reservados pela spec.
  • Aspas não correspondentes em atributos. `<a name="value\'>` mistura aspas duplas e simples. Escolha um estilo consistente por atributo. Qualquer um é XML válido.
Perguntas frequentes

Formatar muda meus dados?

Apenas espaços entre elementos. Ordem de elementos, ordem de atributos, valores de atributos, conteúdo de texto e enquadramento CDATA são preservados. A forma auto-fechada (`<x/>`) e a forma explícita (`<x></x>`) podem normalizar.

Comentários XML são preservados?

fast-xml-parser remove comentários por padrão. Se precisar de formatação preservando comentários, use uma ferramenta diferente (a transformação identidade XSLT, por exemplo, ou `xmllint --format`).

Isto valida contra um schema?

Não. Isto verifica apenas well-formedness — que o documento parseia como XML sintaticamente válido. Validação de schema (XSD, DTD, RelaxNG) é um passo separado que requer o schema como entrada adicional.

Como namespaces são tratados?

Prefixos de namespace são mantidos como parte do nome do elemento (`x:foo`). Declarações de namespace padrão e bindings de prefixo são preservadas como atributos. Processamento namespace-aware (resolução de URI) não é realizado.

Meu XML é enviado para algum lugar?

Não. Tudo roda no seu navegador — sua entrada é parseada e re-serializada por JavaScript nesta página e nunca enviada a servidor.

Posso personalizar a indentação?

Atualmente fixada em 2 espaços por nível. Para personalizar, rode fast-xml-parser na linha de comando — mesma biblioteca — e passe `{ indentBy: " " }` ou outra string.