Formatador e validador XML
Cole XML, formate com indentação adequada ou valide a sintaxe. Lida com atributos e namespaces. Sem upload.
- Cole seu XML na área de texto à esquerda.
- Clique em Formatar para fazer round-trip pelo fast-xml-parser e produzir XML indentado.
- Clique em Validar para verificar well-formedness sem modificar a entrada.
- 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: `<`, `>`, `&`, `"`. 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.