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