O que esta ferramenta faz
Cada linha do CSV vira um elemento row dentro de um documento rows, e cada coluna um elemento filho com o nome do seu cabeçalho. Os valores são escapados como o XML exige: o e comercial vira &, os sinais de maior e menor viram < e >.
Você escolhe a indentação, se os tipos são detectados e se a declaração XML aparece no topo.
Nomes de coluna não são livres
Um nome de elemento XML tem regras; um cabeçalho de planilha não. Um nome não pode conter espaço, não pode começar com dígito e não aceita a maioria da pontuação — coisas comuníssimas numa linha de cabeçalho exportada.
Então os nomes do cabeçalho são ajustados em vez de copiados:
- um caractere proibido vira sublinhado:
first namedáfirst_name,a+bdáa_b; - um nome que começa com algo que o XML não aceita recebe um prefixo, não um corte:
2coldá_2col, e você continua sabendo qual coluna era; - as letras que o XML aceita ficam intactas, com acento e CJK inclusive —
cafée日本語passam sem mudança.
A alternativa seria emitir o cabeçalho literal e devolver um arquivo com cara de convertido que falha no primeiro parse. Essa falha aparece longe da causa, e é isso que a torna cara.
Cabeçalhos duplicados
Duas colunas com o mesmo nome são separadas antes de chegar ao XML: a segunda vira a_1. Nenhuma coluna é fundida em silêncio com outra. O mesmo vale quando dois cabeçalhos diferentes se reduzem ao mesmo nome: user id e user_id dão ambos user_id, então o segundo vira user_id_1. Sem isso, uma das duas colunas sumiria do documento, valor incluído.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.