Converter XML em CSV

Funciona no seu dispositivo · Seu arquivo nunca sai do seu dispositivo.

Solte um arquivo XML de registros repetidos — <registros><registro>…</registro>…</registros>, um feed RSS, uma exportação de banco de dados — e receba um CSV com uma linha por registro. O documento é lido pelo leitor de XML do navegador, e a lista mais longa de elementos repetidos é encontrada sozinha, seja qual for o envoltório — um atributo no envoltório, ou o título e o link do próprio feed ao lado dos itens —, e a linha do resultado diz qual lista foi usada.

Cada registro é achatado do mesmo jeito que na ferramenta de JSON para CSV: elementos aninhados viram colunas separadas por ponto (endereco.cidade), atributos viram colunas com @ na frente (@id), elementos internos repetidos que têm filhos próprios ganham colunas numeradas (line.0.sku), elementos de texto repetidos são unidos com ponto e vírgula (a;b), e o cabeçalho é a união de todas as colunas encontradas. Os valores são escritos exatamente como estão no XML. Campos com vírgulas, aspas ou quebras de linha são colocados entre aspas pela RFC 4180.

O CSV sai em UTF-8 com um BOM opcional para o Excel, você escolhe o separador, e pode ver as primeiras 200 linhas antes de baixar. Nada é enviado.

Como Converter XML em CSV

  1. Solte um arquivo XML, ou cole o XML na caixa.
  2. Escolha o separador da saída e se quer o BOM do Excel.
  3. Clique em «Converter para CSV» e confira a prévia.
  4. Baixe o .csv.

Formatos suportados e limites

Entrada
XML (.xml) — arquivo ou texto colado, na codificação que ele declara
Saída
CSV, RFC 4180, UTF-8, BOM opcional
Linhas
A lista mais longa de elementos repetidos
Aninhamento
Elementos filhos → colunas com ponto; atributos → colunas com @
Onde roda
No seu navegador — sem enviar nada

Não serve para: Documentos com várias listas de registros — só a mais longa vira linhas; para outra, converta para JSON, copie aquela lista e converta-a com a ferramenta de JSON para CSV.

Como as linhas são encontradas

As linhas são a lista mais longa de elementos repetidos em qualquer ponto abaixo da raiz, seja qual for o envoltório. <records count="2"><record>…</record><record>…</record></records> dá uma linha por <record>, mesmo com o envoltório tendo um atributo. Um feed RSS dá uma linha por <item>, com colunas como title, link e pubDate, mesmo com o title e o link do próprio canal ao lado dos itens. A linha embaixo do resultado diz qual lista foi usada, por exemplo rss.channel.item.

Valores ao lado dessa lista, como o título do próprio feed, não fazem parte de nenhum registro e ficam de fora. Quando um documento tem várias listas de registros, só a mais longa vira linhas. Para usar outra, converta o arquivo com /xml-to-json, copie aquela lista do [ até o ], cole-a em /json-to-csv e converta.

Um arquivo com um registro só

Sem elemento repetido, o único registro é a única linha, e as colunas são os próprios nomes de campo dele: <records><record><name>Ana</name><city>Recife</city></record></records> dá as colunas name e city. Assim, um arquivo que às vezes tem um registro e às vezes muitos mantém o mesmo cabeçalho, o que importa quando outro programa lê as colunas pelo nome.

Como os valores são escritos

Os valores são escritos exatamente como estão no XML: 1.50 continua 1.50, TRUE continua TRUE, e um elemento com NULL dá o texto NULL, enquanto um elemento vazio dá uma célula vazia. 007 mantém os zeros, e as datas ficam como estão escritas. Um valor que começa com =, +, - ou @ ganha um apóstrofo na frente, como em /json-to-csv, para a planilha não executá-lo como fórmula.

Elementos filhos repetidos que só têm texto são unidos com ponto e vírgula numa célula, então dois elementos <tag> dão a;b. Elementos filhos repetidos com filhos próprios ganham colunas numeradas, como line.0.sku e line.1.sku. Os prefixos de namespace ficam nos nomes de coluna, como em soap:Body.price. Texto que fica ao lado de elementos filhos vai para uma coluna #text, sem a posição entre eles. O arquivo é lido na codificação que a primeira linha declara.

Perguntas frequentes

Meus arquivos são enviados para algum servidor?
Não. A conversão acontece inteiramente no seu navegador, com a capacidade do seu próprio aparelho. O arquivo não sai do seu computador nem do seu celular, e, depois que você usa a ferramenta uma vez, ela continua funcionando sem internet (as de vídeo, de reconhecimento de texto e de remoção de fundo baixam o motor deste site no primeiro uso).
Como ele sabe quais elementos são as linhas?
Pega a lista mais longa de elementos repetidos abaixo da raiz — então <registros><registro>…</registro></registros> dá uma linha por <registro>, e um feed RSS, uma linha por <item>. Valores ao lado dessa lista, como o título do próprio feed, ficam de fora. Sem elemento repetido, o único registro vira uma linha, com os nomes dos próprios campos como colunas.
Para onde vão os atributos?
Para colunas com @ na frente: <registro id="3"> gera uma coluna chamada @id. Texto ao lado de elementos filhos vai para uma coluna #text.
O Excel vai abrir certo?
Sim. A opção «Adicionar BOM para o Excel» (ligada por padrão) grava a marca que o Excel precisa para reconhecer UTF-8, então acentos, cedilhas e símbolos aparecem corretamente.

Ferramentas relacionadas

Mais em Planilhas e dados

Esta página em outros idiomas: English · العربية · Deutsch · Français · Español · Русский · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা