eu construo Toolz.dev, e um trabalho recorrente em todo o trabalho WordPress e Laravel que EU faço é alimentar dados em sistemas que foram projetados há uma década ou duas. Muitos deles ainda falam XML e apenas XML: um feed de produto para um mercado, um formato de importação para um pacote de contabilidade, um endpoint SOAP que não vai olhar para mais nada Os dados quase sempre chegam como uma exportação CSV de uma planilha, então a tarefa é transformar linhas planas separadas por vírgulas em um documento XML estruturado Eu observei que dão errado de todas as maneiras possíveis, desde um nome de cliente contendo uma vírgula que se dividiu em duas colunas, até um ampersand em um nome de empresa que fez todo o arquivo não analisar. O Conversor CSV para XML existe para fazer essa conversão corretamente, no navegador, sem colar uma lista de clientes em algum servidor anônimo Este guia cobre o que a conversão envolve, por que as partes complicadas são complicadas e como moldar a saída para o que quer que seja que vai lê-la.
tl;dr: Um conversor CSV para XML lê linhas separadas por vírgulas e as grava como um documento XML bem formado, com cada linha se tornando um elemento e cada célula se tornando um elemento filho nomeado ou um atributo. Ele analisa CSV por RFC 4180, portanto, campos citados contendo vírgulas, aspas ou quebras de linha sobrevivem intactos; ele detecta automaticamente se o delimitador é vírgula, ponto e vírgula, guia ou pipe; ele coage nomes de colunas em tags XML válidas; e escapa dos caracteres significativos de marcação para que a saída sempre seja analisada. Ele é executado inteiramente no seu navegador, de modo que os dados no seu CSV nunca sejam carregados.
Qual é a diferença entre CSV e XML?
CSV, valores separados por vírgulas, é um formato de texto plano Cada linha é um registro, e dentro de uma linha cada campo é separado por um delimitador, geralmente uma vírgula É compacto, cada planilha pode exportá-lo, e é trivial para um humano ler O que não pode fazer é expressar estrutura ou significado Não há nada em um CSV que diga o que uma coluna significa, nenhum aninhamento, nenhum tipo; uma célula segurando true e uma cela segurando a palavra true são indistinguíveis e um valor que contém uma vírgula precisa de citações especiais para evitar ser lido como dois campos.
XML, a Extensible Markup Language, é o comércio oposto Todo valor é envolvido em uma tag nomeada, então <name>Ada Lovelace</name> carrega tanto o valor quanto o rótulo para ele Essa verbosidade compra estrutura: elementos nidificam, documentos podem ser validados contra um esquema e uma folha de estilo pode transformar a coisa toda As regras para o que conta como XML bem formado são estabelecidas no Especificação W3C XML 1.0, e eles são rigorosos de maneiras CSV nunca é, que é exatamente por isso que uma conversão mecânica tem que ter cuidado Converter CSV para XML é fundamentalmente sobre a adição da estrutura e o escape que CSV deixa implícito.
Como uma linha se torna um elemento?
O mapeamento natural trata a primeira linha CSV como o cabeçalho, segurando os nomes das colunas, e cada linha seguinte como um registro Cada registro se torna um elemento de linha, e dentro dele cada célula se torna um elemento filho com o nome de sua coluna Então um CSV de id,name,role com uma linha de dados 1,Ada Lovelace,Engineer torna-se:
<rows>
<row>
<id>1</id>
<name>Ada Lovelace</name>
<role>Engineer</role>
</row>
</rows>
O exterior rows elemento é a raiz do documento, porque um documento XML bem formado deve ter exatamente um elemento de nível superior envolvendo todo o resto O conversor permite renomear tanto a raiz quanto o elemento por linha, para que você possa produzir <catalog><product>...</product></catalog> em vez disso, quando é isso que seu alvo espera. Os nomes das colunas tornam-se os nomes das tags, que é onde a primeira restrição real é mordida, porque nem todo título de coluna é uma tag XML legal.
Por que alguns nomes de colunas são alterados?
Os nomes dos elementos XML não são de forma livre A especificação diz que um nome deve começar com uma letra ou sublinhado e pode então conter letras, dígitos, hífens, pontos e sublinhados, mas não espaços e não a maior parte da pontuação, e pode não começar com um dígito Uma coluna de planilha chamada First Name ou Unit Price ($) ou 2024 Total é um título perfeitamente bom e uma etiqueta XML ilegal. Se um conversor emitido <First Name> o documento não iria analisar de forma alguma.
Assim, a ferramenta higieniza cada nome de coluna em uma tag válida Espaços e caracteres ilegais tornam-se sublinhados, então First Name torna-se First_Name, e um nome que começa com um dígito recebe um prefixo de sublinhado 2024 Total torna-se _2024_Total. Se duas colunas higienizarem para a mesma tag, ou o cabeçalho genuinamente repetir um nome, as duplicatas obtêm um sufixo numérico para que nenhuma coluna substitua silenciosamente outra, e a ferramenta avisa quando tiver feito isso A garantia importante é que apenas os nomes das tags sejam ajustados; os dados dentro de cada célula são passados intocados Se você precisar dos rótulos originais preservados exatamente, o modo de atributo, coberto abaixo, geralmente é um ajuste melhor porque os nomes dos atributos estão voltados para as mesmas regras, mas você também pode optar por carregar o título como um valor em outro lugar.
E quanto às vírgulas e aspas dentro de um valor?
Essa é a parte que quebra conversores ingênuos, e vale a pena entender O CSV tem uma convenção de citação, formalizada em RFC 4180, para valores que contêm o delimitador ou uma quebra de linha Tal valor é envolvido em aspas duplas, e qualquer citação dupla literal dentro dele é escrito como duas aspas duplas Assim, um campo da empresa segurando Hopper, Grace é armazenado no CSV como "Hopper, Grace", e uma leitura de nota she said "hi" é armazenado como "she said ""hi""".
Um conversor que divide cada linha em vírgulas irá mangle ambos, transformando um campo em dois e deixando aspas perdidas em todos os lugares Esta ferramenta usa um analisador de máquina de estado adequado que rastreia se ele está dentro de um campo citado, então uma vírgula incorporada, uma cotação incorporada, e até mesmo uma nova linha dentro de um valor cotado são todos lidos como parte do campo único a que pertencem Essa é a diferença entre um cliente nomeado Smith, John chegando como um <name> elemento e chegando como um registro quebrado com uma coluna extra Se sua exportação saiu do Excel, Planilhas Google, ou um despejo de banco de dados, ele quase certamente usa essa cotação, e analisá-lo corretamente não é opcional.
Uma vez que o valor é analisado com segurança, ele ainda tem que ser tornado seguro para XML, que é um problema de escape separado Cinco caracteres são especiais em XML, e os três que importam no texto do elemento são o e comercial, o sinal de menor que, e o sinal de maior que uma célula contendo Ben & Jerry's ou x < y produziria XML inválido se escrito literalmente, então o conversor os substitui pelas entidades predefinidas &, <, e >. Em valores de atributos a cotação dupla é escapado também Este escape é o que garante as análises de saída, não importa o que os dados contêm.
Cada célula deve ser um elemento ou um atributo?
XML dá-lhe dois lugares para colocar um valor: como o texto de um elemento filho, ou como um atributo no elemento linha O conversor suporta ambos, e qual deles está certo depende inteiramente do sistema que irá ler o arquivo O modo Elemento produz a forma legível, aninhável:
<row>
<name>Ada</name>
</row>
O modo de atributo colapsa toda a linha em um único elemento de fechamento automático:
<row name="Ada" role="Engineer"/>
Veja como os dois se comparam nas dimensões que normalmente decidem:
| consideração | Elementos criança | atributos |
|---|---|---|
| legibilidade | Mais alto, um valor por linha | Mais denso, uma linha por linha |
| Tamanho arquivo | Maior, tags repetidas | Menor |
| Pode nidificar mais tarde | sim | não |
| Valores repetidos por coluna | Permitido | Um valor por nome de atributo |
| Ajuste típico | Dados estilo documento, feeds | Registros compactos, config |
Como regra geral, se os dados forem semelhantes a registros e planos e o leitor quiser que sejam pequenos, os atributos serão bons; se os dados puderem crescer na estrutura mais tarde ou se um ser humano os ler, os elementos serão o padrão mais seguro. Quando você não tem certeza do que o sistema consumidor deseja, os elementos são a escolha mais conservadora porque qualquer coisa que aceite atributos também pode ser adaptada aos elementos, mas o inverso nem sempre é verdadeiro.
Como usar o conversor CSV para XML
Passo 1: Cole seu CSV
Cole ou digite seu CSV na caixa de entrada Um bloco copiado diretamente do Excel ou do Planilhas Google funciona, assim como o conteúdo de um .csv arquivo, incluindo campos cotados que contêm vírgulas ou quebras de linha.
Passo 2: Defina as opções
Deixe o delimitador em auto-detectar ou escolha um explicitamente, confirme se a primeira linha é um cabeçalho, defina os nomes dos elementos raiz e linha e escolha se cada célula se torna um elemento filho ou um atributo Você também pode alternar a declaração XML e alternar entre saída recuada e minificada.
Passo 3: Converter
Clique em Converter para XML. A ferramenta analisa cada linha, higieniza os nomes das colunas em tags válidas, escapa dos caracteres de marcação e monta um documento bem formado, alertando sobre quaisquer colunas renomeadas ou linhas irregulares.
Passo 4: Copiar ou baixar
Copie o XML para sua área de transferência ou baixe-o como um .xml arquivo. Se a forma não é exatamente direita para o sistema do alvo, ajuste os nomes dos elementos ou alterne entre o modo do elemento e do atributo e converta outra vez.
Por que detectar automaticamente o delimitador?
Nem todos os & quot; CSV & quot; são separados por vírgulas As exportações de locais europeus usam frequentemente um ponto e vírgula, porque a vírgula é o separador decimal nessas regiões, e os dados extraídos de uma base de dados ou de um registo são frequentemente separados por tabulações Um conversor bloqueado em vírgulas leria um ficheiro de ponto e vírgula como uma única coluna larga e produziria disparates Esta ferramenta detecta o delimitador tentando vírgula, ponto e vírgula, tabulação e pipe e picking o que produzir uma contagem de colunas consistente nas primeiras linhas, o que é um sinal muito mais confiável do que a frequência bruta porque uma vírgula dentro da prosa aparece com frequência, mas irregularmente Você sempre pode substituir o palpite quando um arquivo é incomum, mas para os casos comuns a detecção significa que você cola e vai.
As linhas irregulares, onde uma linha tem mais ou menos campos do que o cabeçalho, são a outra bagunça do mundo real O conversor preenche linhas curtas com elementos vazios e avisa em vez de soltar dados silenciosamente, para que você possa ver que a linha 47 estava faltando seus dois últimos campos em vez de descobri-la a jusante Campos extras além do cabeçalho obtêm nomes genéricos de colunas para que nada seja perdido, e o aviso informa exatamente quantas linhas foram afetadas, o que geralmente é suficiente para rastrear o problema de volta a um delimitador perdido na fonte Se você quiser inspecionar um arquivo bagunçado antes de convertê-lo, o Visualizador CSV renderiza-o como uma tabela com o mesmo analisador tolerante, que geralmente é a maneira mais rápida de identificar um delimitador perdido ou uma cotação não fechada antes que ele se torne uma saída malformada.
Onde o conversor CSV para XML se encaixa com todo o resto
A conversão de dados raramente é um único salto O mesmo CSV que precisa se tornar XML hoje pode precisar se tornar JSON amanhã para uma API REST, ou um lote de inserções SQL para uma carga de banco de dados Conversor CSV para JSON lida com o alvo JSON com o mesmo analisador RFC 4180 e o Conversor CSV para SQL transforma as mesmas linhas em instruções de inserção Quando os dados já são XML e você precisa ir para o outro lado, o Conversor de XML para JSON e o Conversor JSON para XML cubra ambas as direções do limite XML-JSON e elas usem as mesmas convenções de atributos e texto que esta ferramenta segue, para que a viagem de ida e volta seja previsível.
Para um quadro mais amplo, o Guia CSV para JSON aprofunda-se na análise das mesmas exportações confusas, o Guia JSON para XML explica o mapeamento de elementos e atributos do lado JSON e o Privacidade de dados em ferramentas online artigo explica por que fazer tudo isso no navegador importa quando o CSV detém nomes e endereços de e-mail Como tudo no Toolz.dev, o conversor é executado inteiramente em seu navegador, de modo que os dados que você converte nunca sai de sua máquina.
Perguntas frequentes
Como faço para converter um arquivo CSV para XML?
Cole o CSV na caixa de entrada, confirme as configurações do delimitador e do cabeçalho e clique em Converter em XML A primeira linha é lida como os nomes das colunas, e cada linha seguinte se torna um elemento XML cujas tags filhas recebem o nome dessas colunas Você pode então copiar o resultado ou baixá-lo como um arquivo.xml.
O que acontece com a linha de cabeçalho CSV?
Quando o & quot; first row estiver header" estiver ligado, as células do cabeçalho tornam - se os nomes dos elementos XML para cada linha de dados Os nomes são higienizados em marcas XML válidas, pelo que o & quot; First Name" torna - se First_Name e uma coluna duplicada é renomeada com um sufixo numérico Se desligar a opção do cabeçalho, as colunas são nomeadas column_1, column_2, e assim por diante.
Cada célula deve ser um elemento ou um atributo?
Depende da leitura do sistema XML. O modo Element grava uma estrutura legível aninhável com uma tag por valor, enquanto o modo atributo colapsa uma linha em um único elemento compacto com um atributo por coluna Este conversor suporta ambos, então escolha aquele que seu esquema ou destino de importação espera; os elementos são o padrão mais seguro quando você não tem certeza.
O conversor lida com vírgulas dentro de um valor?
Sim. Seguindo a RFC 4180, um valor que contém uma vírgula, uma aspa dupla ou uma quebra de linha é envolvido em aspas duplas no CSV, e uma aspa incorporada é escrita como duas aspas O analisador lê esses campos cotados como um único valor em vez de dividi-los, então o & quot; Hopper, Grace" fica em um elemento.
Quais delimitadores são suportados?
Vírgula, ponto e vírgula, guia e pipe Por padrão, a ferramenta detecta automaticamente o delimitador escolhendo aquele que produz um número consistente de colunas nas primeiras linhas, que lida corretamente com arquivos de ponto e vírgula europeus e exportações separadas por tabulações. Você também pode selecionar o delimitador manualmente.
Por que alguns dos nomes das minhas colunas são alterados no XML?
Os nomes dos elementos XML não podem conter espaços ou a maioria das pontuações e não podem começar com um dígito ou hífen O conversor substitui os caracteres ilegais por sublinhados e prefixa um nome que começa com um dígito, de modo que a saída é sempre bem formada Os dados originais em cada célula nunca são alterados, apenas os nomes das tags.
Meus dados CSV são carregados em um servidor?
Não. Toda a conversão é executada no seu navegador com JavaScript. Nada do que você colar é transmitido, registrado ou armazenado, e a ferramenta continua funcionando sem conexão de rede depois que a página é carregada, o que mantém nomes, e-mails e outros dados em seu CSV privados.
Posso converter XML de volta para CSV ou para JSON?
Esta ferramenta converte CSV para XML. Para remodelar os dados de outra forma, use o conversor XML para JSON, e use o conversor CSV para JSON quando JSON em vez de XML é o seu alvo Todos eles executam o lado do cliente com as mesmas garantias de privacidade.



