Uma coluna chamada «Total (€)» não pode ser um nome de elemento XML
Publicado a 15/09/2026 · 4 min de leitura · Ferramentas de ficheiros
Daniel Okonkwo — Programador front-end e redator de Tecnologia na OneKitly
Desempenho web · Formatos de ficheiro
Verificado a partir de 3 fontes
Ambas as exportações leem a primeira linha como nomes de campo e depois cada uma tem de obedecer às regras do seu próprio formato. O JSON quase não tem: uma chave pode ser qualquer cadeia, por isso uma coluna intitulada «Total (€)» torna-se a chave «Total (€)» tal e qual, e uma coluna sem rótulo torna-se a chave «» — incómodo mas fiel. O XML tem regras estritas sobre os nomes, e o texto de um cabeçalho costuma infringi-las. Medido sobre uma folha de quatro colunas: «Produit» continua Produit, «Total (€)» passa a Total_, «2026 ventes» passa a _ventes porque um nome não pode começar por um algarismo, e um cabeçalho vazio passa a column4. Nada é suprimido — cada caractere proibido num nome é dobrado em sublinhado em vez de apagado — mas dois cabeçalhos diferentes podem normalizar-se para o mesmo nome de elemento, e convém verificá-lo antes de dar o resultado a algo que os espera distintos. Os valores são escapados e não alterados: um e comercial ou um sinal de maior numa célula atravessa intacto.
O JSON toma o texto do teu cabeçalho como chave, exatamente tal e qual. O XML não pode — os seus nomes não admitem espaços, parênteses nem um algarismo inicial — por isso são normalizados, e saber como evita uma surpresa a jusante.
A linha vazia que só alguns formatos emitem
Uma folha com uma linha totalmente vazia no meio exporta-se de forma diferente conforme a forma do destino. Os formatos por linhas conservam-na: o CSV de uma folha de quatro colunas com uma linha vazia contém uma linha feita de três vírgulas, e o TSV de três tabulações — porque uma linha é uma linha e o formato não tem noção de registo ausente. Os formatos por objetos descartam-na: o JSON emitiu dois objetos para três linhas de dados no mesmo teste. O XML é por linhas por construção e tê-la-ia conservado naturalmente, o que faria com que um mesmo ficheiro se contradissesse entre duas exportações da mesma ferramenta. Descarta pois a linha vazia, e JSON e XML concordam.
Que destino para que consumidor
JSON quando o vai ler um script ou uma API, porque as chaves sobrevivem tal e qual e quem lê pode designar uma coluna pelo seu nome real. XML quando o consumidor é um sistema antigo, uma integração de empresa ou qualquer coisa que valide contra um esquema — e verifica antes os nomes de elementos contra esse esquema, já que a normalização pode não produzir o que ele espera. TSV quando o destino é um carregamento em base de dados ou um encadeamento de shell: uma tabulação tem muito menos hipóteses de aparecer dentro de uma célula do que uma vírgula, por isso um ficheiro separado por tabulações precisa de menos aspas e parte-se menos. HTML quando alguém só quer olhar para a tabela num navegador ou colá-la num documento.
| Cabeçalho na folha | Chave JSON | Elemento XML |
|---|---|---|
| Produit | «Produit» | <Produit> |
| Total (€) | «Total (€)» | <Total_> |
| 2026 ventes | «2026 ventes» | <_ventes> — sem algarismo inicial |
| (sem cabeçalho) | «» | <column4> |
Perguntas frequentes
- E se dois cabeçalhos se normalizarem para o mesmo nome de elemento?
- Obténs dois elementos com o mesmo nome dentro de cada linha, o que é XML válido e normalmente não é o que um consumidor quer. «Total (€)» e «Total (£)» passam ambos a Total_, por exemplo. Renomeia as colunas na folha antes de converter — é o único sítio onde a ambiguidade pode ser levantada, já que uma vez produzido o XML os cabeçalhos originais desapareceram.
- Os caracteres acentuados passam nos dois formatos?
- Nos valores, sim — ambos são escritos em UTF-8 e o XML declara-o no seu prólogo. Nos nomes de elementos XML as regras são mais largas do que parecem: um nome pode conter letras acentuadas, de modo que um cabeçalho «Quantité» seria um elemento válido. Este conversor é mais estrito do que a especificação e dobra tudo o que sai do alfabeto latino simples num sublinhado — a opção prudente para consumidores eles próprios mais estritos do que a especificação, e há muitos.
- Posso obter um ficheiro por folha em vez de por livro?
- Divide primeiro o livro e depois converte cada pedaço — a divisão escreve um .xlsx por folha e os conversores tomam uma folha de cada vez, por isso esse caminho dá-te exatamente uma saída por separador com os nomes conservados. Converter diretamente um livro de várias folhas dá-te a primeira, o que serve para o caso corrente de um livro que é na verdade uma só tabela.
Artigos que podem interessar-lhe
Todos os guias →Ferramentas relacionadas
Fontes
Detetaste um erro neste artigo?