Ir para a ferramenta
ViewCSV
Sem upload de arquivos

Converter CSV em XML

orders.csv· DADOS DE EXEMPLO15 linhas · 8 colunas
Valores como
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <order_id>001041</order_id>
    <customer>Laura Costa</customer>
    <city>Porto Alegre</city>
    <product>Desk lamp</product>
    <quantity>6</quantity>
    <unit_price>224.92</unit_price>
    <order_date>2026-01-15</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001042</order_id>
    <customer>Arthur Alves</customer>
    <city>Fortaleza</city>
    <product>Monitor 27"</product>
    <quantity>1</quantity>
    <unit_price>172.72</unit_price>
    <order_date>2026-02-11</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Miguel Costa</customer>
    <city>Rio de Janeiro</city>
    <product>Coffee beans 1kg</product>
    <quantity>7</quantity>
    <unit_price>165.86</unit_price>
    <order_date>2026-03-07</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001044</order_id>
    <customer>Gael Rodrigues</customer>
    <city>Belo Horizonte</city>
    <product>Monitor 27"</product>
    <quantity>1</quantity>
    <unit_price>131.36</unit_price>
    <order_date>2026-04-23</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001045</order_id>
    <customer>Alice Oliveira</customer>
    <city>Porto Alegre</city>
    <product>USB-C cable</product>
    <quantity>8</quantity>
    <unit_price/>
    <order_date>2026-05-25</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001046</order_id>
    <customer>Helena Souza</customer>
    <city>Salvador</city>
    <product>Coffee beans 1kg</product>
    <quantity>1</quantity>
    <unit_price>71.08</unit_price>
    <order_date>2026-06-08</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001047</order_id>
    <customer> Laura Gomes </customer>
    <city>Porto Alegre</city>
    <product>Coffee beans 1kg</product>
    <quantity>3</quantity>
    <unit_price>89.84</unit_price>
    <order_date>2026-07-16</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001048</order_id>
    <customer>Théo Oliveira</customer>
    <city>Fortaleza</city>
    <product>Notebook A5</product>
    <quantity>7</quantity>
    <unit_price>49.50</unit_price>
    <order_date>2026-08-26</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001049</order_id>
    <customer>Helena Rodrigues</customer>
    <city>Salvador</city>
    <product>Desk lamp</product>
    <quantity>3</quantity>
    <unit_price>54.27</unit_price>
    <order_date>2026-09-27</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001050</order_id>
    <customer>Heitor Santos</customer>
    <city>Curitiba</city>
    <product>Desk lamp</product>
    <quantity>6</quantity>
    <unit_price>138.90</unit_price>
    <order_date>2026-01-05</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001051</order_id>
    <customer>Helena Ferreira</customer>
    <city>Curitiba</city>
    <product>USB-C cable</product>
    <quantity>7</quantity>
    <unit_price>6.10</unit_price>
    <order_date>2026-02-03</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001052</order_id>
    <customer>Valentina Pereira</customer>
    <city>Belo Horizonte</city>
    <product>Chair, ergonomic</product>
    <quantity>3</quantity>
    <unit_price>106.72</unit_price>
    <order_date>2026-03-09</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001053</order_id>
    <customer>Laura Alves</customer>
    <city>Fortaleza</city>
    <product>Notebook A5</product>
    <quantity>6</quantity>
    <unit_price>239.22</unit_price>
    <order_date>2026-04-12</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001054</order_id>
    <customer>Valentina Souza</customer>
    <city>São Paulo</city>
    <product>Chair, ergonomic</product>
    <quantity>9</quantity>
    <unit_price>154.44</unit_price>
    <order_date>2026-05-25</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Miguel Costa</customer>
    <city>Rio de Janeiro</city>
    <product>Coffee beans 1kg</product>
    <quantity>7</quantity>
    <unit_price>165.86</unit_price>
    <order_date>2026-03-07</order_date>
    <status>shipped</status>
  </row>
</rows>

15 linhas · 1 arquivo

Abra ou cole um arquivo CSV e receba um XML bem-formado: um elemento raiz, um elemento por registro e cada valor como elemento filho ou como atributo. Cabeçalhos que não são nomes XML válidos, como Order ID ou 2024 total, são renomeados, e cada renomeação aparece listada. A conversão acontece no seu navegador, e o arquivo nunca é enviado.

Como converter CSV em XML

  1. Clique em Abrir arquivo, arraste um arquivo .csv, .tsv ou .txt para a ferramenta ou escolha Colar. Se as colunas parecerem erradas, confira o delimitador e a codificação em Configurações de importação.
  2. Dê nome ao Elemento raiz e ao Elemento de linha (rows e row por padrão), de acordo com o que o sistema de destino espera.
  3. Escolha Valores como, o tratamento de valores vazios, o Recuo e a declaração, e depois clique em Copiar ou Baixar XML.

Se o sistema que vai ler o arquivo exige nomes de tag específicos, renomeie antes as colunas do CSV com Renomear e reordenar colunas do CSV, para não depender da renomeação automática.

Opções de estrutura do XML

Elementos filhosÉ o padrão: <row><Customer>Smith &amp; Sons</Customer>…</row>. Preserva as quebras de linha dos valores e funciona com a maioria das ferramentas de importação.
AtributosUm elemento autofechado por linha: <row Customer="Smith &amp; Sons" …/>. É mais compacto; tabulações e quebras de linha nos valores são gravadas como &#9;, &#10; e &#13;, para que o parser as preserve.
Omitir valores vaziosVem desativada, então uma célula vazia vira um elemento vazio, como <Ship_date/>. Ativada, o elemento ou atributo fica de fora daquela linha.
Recuo2 espaços (padrão), 4 espaços ou Nenhum (minificado), que grava o documento inteiro em uma linha só.
Adicionar a declaração XMLVem ativada: a primeira linha é <?xml version="1.0" encoding="UTF-8"?>. Desative quando o XML for embutido em outro documento.

Os nomes da raiz e da linha passam pelas mesmas regras dos cabeçalhos; um valor em branco ou inválido volta para rows ou row, ou ganha um sublinhado na frente.

Como os nomes das colunas viram nomes XML

  • Espaços viram _, e qualquer caractere que não seja letra, dígito, ., - ou _ também vira _: Total (EUR) → Total__EUR_, e-mail:work → e-mail_work. Os dois-pontos são substituídos, então nenhum prefixo de namespace é criado.
  • Um nome que começa com dígito, . ou - ganha um sublinhado na frente (2024 total → _2024_total); o mesmo vale para nomes que começam com xml, em maiúsculas ou minúsculas, porque o XML reserva esse prefixo (xml_ref → _xml_ref).
  • Se dois cabeçalhos acabarem com o mesmo nome, o segundo recebe _2 (a b e a_b → a_b, a_b_2). Nomes XML diferenciam maiúsculas de minúsculas, então Name e name continuam distintos.
  • Letras de qualquer escrita são mantidas: Größe e 価格 são nomes XML válidos. Um cabeçalho em branco vira primeiro Column 7 e depois Column_7.
  • Cada renomeação aparece listada abaixo das opções no formato old → new (nome antigo → nome novo), e um aviso acima da prévia mostra o total.

Como os valores são gravados

  • &, < e > passam por escape no texto dos elementos; nos atributos, " também. Fora isso, os valores são gravados exatamente como no CSV: 00731 mantém os zeros e nenhum tipo é deduzido.
  • O XML 1.0 proíbe a maioria dos caracteres de controle (U+0000–U+001F, exceto tabulação, avanço de linha e retorno de carro), além de U+FFFE, U+FFFF e surrogates sem par, mesmo com escape. Eles são removidos, e a ferramenta mostra quantos valores foram afetados.
  • Vírgulas, aspas e quebras de linha entre aspas são lidas conforme a RFC 4180; dentro de um elemento filho, a quebra de linha continua sendo uma quebra de linha de verdade.
  • A saída é sempre UTF-8.

Quando um parser XML ou uma importação recusa o arquivo

  • Minha ferramenta de importação não encontra um campo. Provavelmente ele foi renomeado. Confira a lista abaixo das opções e renomeie a coluna no CSV ou ajuste o mapeamento no sistema de destino.
  • O parser acusa erro de codificação. Abra o arquivo de origem com a codificação real dele em Configurações de importação; o XML só sai em UTF-8 correto se o CSV tiver sido decodificado direito.
  • Ficou tudo em um único elemento. O delimitador foi detectado errado; escolha Vírgula, Ponto e vírgula, Tabulação ou Barra vertical em Configurações de importação.
  • Preciso de CDATA, namespaces ou um schema. O conversor grava apenas elementos e atributos simples; acrescente esses recursos em uma etapa posterior.

Limites e privacidade

Arquivos de até 25 MB, 100.000 linhas ou 2 milhões de células abrem com prévia ao vivo das primeiras 200 linhas. Arquivos maiores são convertidos em modo de streaming: o arquivo é lido duas vezes, em partes (uma para medir as colunas, outra para gravar), um aviso informa que o download cobre o arquivo inteiro e a opção Copiar não fica disponível. Cada arquivo de saída tem limite de 4 GB.

A conversão roda em um worker em segundo plano nesta aba, então a página continua respondendo e Cancelar interrompe o processo. O CSV nunca é enviado a um servidor.

Exemplo: uma exportação de pedidos com cabeçalhos que precisam ser renomeados

Uma exportação de pedidos com espaços e parênteses nos cabeçalhos, um E comercial, sinais de menor e maior e uma data vazia, convertida com as configurações padrão. Três cabeçalhos são renomeados; o Ship date vazio vira <Ship_date/>.

CSV
Order ID,Customer,Total (EUR),Ship date
10071,"Smith & Sons",249.00,2025-02-03
10072,"Café <Lumière>",18.50,
XML
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <Order_ID>10071</Order_ID>
    <Customer>Smith &amp; Sons</Customer>
    <Total__EUR_>249.00</Total__EUR_>
    <Ship_date>2025-02-03</Ship_date>
  </row>
  <row>
    <Order_ID>10072</Order_ID>
    <Customer>Café &lt;Lumière&gt;</Customer>
    <Total__EUR_>18.50</Total__EUR_>
    <Ship_date/>
  </row>
</rows>

Perguntas frequentes

Por que o nome da minha coluna mudou?

Nomes de elemento XML não podem ter espaços nem a maior parte da pontuação, não podem começar com dígito e não podem começar com xml. O conversor faz a menor alteração possível para chegar a um nome válido e único, e lista cada uma.

É melhor usar elementos ou atributos?

Use elementos filhos, a não ser que o sistema de destino peça atributos. Os elementos preservam as quebras de linha como foram escritas; já nos atributos, os parsers XML normalizam os espaços em branco, e é por isso que o conversor codifica tabulações e quebras de linha como referências de caractere.

Números ou datas recebem tipos?

Não. O XML não tem tipos de valor embutidos, então cada valor é gravado com o texto que está no CSV. Os tipos vêm do schema ou do programa que lê o arquivo.

Padrões e referências