Une colonne nommée « Total (€) » ne peut pas être un nom d'élément XML
Publié le 15/09/2026 · 4 min de lecture · Outils fichiers
Daniel Okonkwo — Développeur front-end et rédacteur Tech chez OneKitly
Performance web · Formats de fichiers
Vérifié à partir de 3 sources
Les deux exports lisent la première ligne comme noms de champs, puis chacun doit obéir aux règles de son propre format. Le JSON n'en a presque aucune : une clé peut être n'importe quelle chaîne, donc une colonne intitulée « Total (€) » devient la clé « Total (€) » telle quelle, et une colonne sans libellé devient la clé « » — gênant mais fidèle. Le XML a des règles strictes sur les noms, et le texte d'un en-tête les enfreint le plus souvent. Mesuré sur une feuille de quatre colonnes : « Produit » reste Produit, « Total (€) » devient Total_, « 2026 ventes » devient _ventes parce qu'un nom ne peut pas commencer par un chiffre, et un en-tête vide devient column4. Rien n'est supprimé — chaque caractère interdit dans un nom est replié en tiret bas plutôt qu'effacé — mais deux en-têtes différents peuvent se normaliser en un même nom d'élément, et cela vaut d'être vérifié avant de donner le résultat à un programme qui les attend distincts. Les valeurs, elles, sont échappées et non altérées : une esperluette ou un chevron dans une cellule traverse intact.
Le JSON prend le texte de ton en-tête comme clé, exactement tel quel. Le XML ne le peut pas — ses noms n'admettent ni espace, ni parenthèse, ni chiffre initial — ils sont donc normalisés, et savoir comment évite une surprise en aval.
La ligne vide que seuls certains formats émettent
Une feuille comportant une ligne entièrement vide au milieu s'exporte différemment selon la forme de la cible. Les formats en lignes la gardent : le CSV d'une feuille à quatre colonnes avec une ligne vide contient une ligne faite de trois virgules, et le TSV de trois tabulations — parce qu'une ligne est une ligne et que le format n'a pas la notion d'enregistrement absent. Les formats en objets la laissent tomber : le JSON a rendu deux objets pour trois lignes de données dans le même test. Le XML est en lignes par construction et l'aurait naturellement gardée, ce qui aurait fait qu'un même fichier se contredise entre deux exports du même outil. Il écarte donc la ligne vide, et JSON et XML s'accordent.
Quelle cible pour quel consommateur
Le JSON quand un script ou une API doit le lire, parce que les clés survivent telles quelles et qu'un lecteur peut désigner une colonne par son vrai nom. Le XML quand le consommateur est un système ancien, une intégration d'entreprise ou tout ce qui valide contre un schéma — et vérifie d'abord les noms d'éléments contre ce schéma, la normalisation ne produisant pas forcément ce qu'il attend. Le TSV quand la destination est un chargement en base ou un enchaînement shell : une tabulation a bien moins de chances d'apparaître dans une cellule qu'une virgule, donc un fichier séparé par tabulations demande moins de guillemets et casse moins souvent. Le HTML quand quelqu'un veut simplement regarder le tableau dans un navigateur ou le coller dans un document.
| En-tête dans la feuille | Clé JSON | Élément XML |
|---|---|---|
| Produit | « Produit » | <Produit> |
| Total (€) | « Total (€) » | <Total_> |
| 2026 ventes | « 2026 ventes » | <_ventes> — pas de chiffre initial |
| (pas d'en-tête) | « » | <column4> |
Questions fréquentes
- Et si deux en-têtes se normalisent en un même nom d'élément ?
- Tu obtiens deux éléments de même nom dans chaque ligne, ce qui est du XML valide et généralement pas ce qu'un consommateur veut. « Total (€) » et « Total (£) » deviennent tous deux Total_, par exemple. Renomme les colonnes dans la feuille avant de convertir — c'est le seul endroit où l'ambiguïté peut être levée, puisque une fois le XML produit les en-têtes d'origine ont disparu.
- Les caractères accentués passent-ils dans les deux formats ?
- Dans les valeurs, oui — les deux sont écrits en UTF-8 et le XML le déclare dans son prologue. Dans les noms d'éléments XML, les règles sont plus larges qu'il n'y paraît : un nom peut contenir des lettres accentuées, si bien qu'un en-tête « Quantité » serait un élément valide. Ce convertisseur est plus strict que la spécification et replie tout ce qui sort de l'alphabet latin simple en tiret bas — choix prudent pour les consommateurs eux-mêmes plus stricts que la spécification, et ils sont nombreux.
- Puis-je obtenir un fichier par feuille plutôt que par classeur ?
- Découpe d'abord le classeur, puis convertis chaque morceau — le découpage écrit un .xlsx par feuille et les convertisseurs prennent une feuille à la fois, ce chemin te donne donc exactement une sortie par onglet, noms conservés. Convertir directement un classeur à plusieurs feuilles te donne la première, ce qui convient au cas courant d'un classeur qui n'est en réalité qu'un tableau.
Articles qui pourraient t'intéresser
Tous les guides →Outils similaires
Sources
Tu as repéré une erreur dans cet article ?