Aller directement à l’outil
ViewCSV
Aucun envoi de fichier

Convertir un CSV en XML

orders.csv· DONNÉES D’EXEMPLE15 lignes · 8 colonnes
Valeurs en
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <order_id>001041</order_id>
    <customer>Emma Moreau</customer>
    <city>Montréal</city>
    <product>Chair, ergonomic</product>
    <quantity>5</quantity>
    <unit_price>111.68</unit_price>
    <order_date>2026-01-10</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001042</order_id>
    <customer>Ambre Laurent</customer>
    <city>Bordeaux</city>
    <product>Notebook A5</product>
    <quantity>9</quantity>
    <unit_price>176.23</unit_price>
    <order_date>2026-02-26</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Gabriel Durand</customer>
    <city>Toulouse</city>
    <product>Notebook A5</product>
    <quantity>4</quantity>
    <unit_price>199.26</unit_price>
    <order_date>2026-03-01</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001044</order_id>
    <customer>Jules Thomas</customer>
    <city>Bordeaux</city>
    <product>Monitor 27"</product>
    <quantity>2</quantity>
    <unit_price>143.23</unit_price>
    <order_date>2026-04-25</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001045</order_id>
    <customer>Louise Martin</customer>
    <city>Montréal</city>
    <product>Notebook A5</product>
    <quantity>1</quantity>
    <unit_price/>
    <order_date>2026-05-25</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001046</order_id>
    <customer>Jade Martin</customer>
    <city>Montréal</city>
    <product>Monitor 27"</product>
    <quantity>4</quantity>
    <unit_price>179.75</unit_price>
    <order_date>2026-06-03</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001047</order_id>
    <customer> Ambre Petit </customer>
    <city>Paris</city>
    <product>Chair, ergonomic</product>
    <quantity>1</quantity>
    <unit_price>186.03</unit_price>
    <order_date>2026-07-08</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001048</order_id>
    <customer>Emma Bernard</customer>
    <city>Toulouse</city>
    <product>Chair, ergonomic</product>
    <quantity>2</quantity>
    <unit_price>121.16</unit_price>
    <order_date>2026-08-14</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001049</order_id>
    <customer>Gabriel Bernard</customer>
    <city>Lyon</city>
    <product>Desk lamp</product>
    <quantity>4</quantity>
    <unit_price>16.49</unit_price>
    <order_date>2026-09-06</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001050</order_id>
    <customer>Emma Leroy</customer>
    <city>Nantes</city>
    <product>Chair, ergonomic</product>
    <quantity>1</quantity>
    <unit_price>209.76</unit_price>
    <order_date>2026-01-24</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001051</order_id>
    <customer>Arthur Moreau</customer>
    <city>Montréal</city>
    <product>USB-C cable</product>
    <quantity>5</quantity>
    <unit_price>99.14</unit_price>
    <order_date>2026-02-06</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001052</order_id>
    <customer>Gabriel Dubois</customer>
    <city>Toulouse</city>
    <product>Monitor 27"</product>
    <quantity>2</quantity>
    <unit_price>23.64</unit_price>
    <order_date>2026-03-22</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001053</order_id>
    <customer>Ambre Leroy</customer>
    <city>Toulouse</city>
    <product>Desk lamp</product>
    <quantity>6</quantity>
    <unit_price>55.90</unit_price>
    <order_date>2026-04-15</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001054</order_id>
    <customer>Léo Laurent</customer>
    <city>Lyon</city>
    <product>USB-C cable</product>
    <quantity>4</quantity>
    <unit_price>98.00</unit_price>
    <order_date>2026-05-13</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Gabriel Durand</customer>
    <city>Toulouse</city>
    <product>Notebook A5</product>
    <quantity>4</quantity>
    <unit_price>199.26</unit_price>
    <order_date>2026-03-01</order_date>
    <status>paid</status>
  </row>
</rows>

15 lignes · 1 fichier

Ouvrez ou collez un fichier CSV pour obtenir un XML bien formé : un élément racine, un élément de ligne par enregistrement, et chaque valeur sous forme d’élément enfant ou d’attribut. Les en-têtes qui ne sont pas des noms XML autorisés, comme Order ID ou 2024 total, sont renommés, et chaque renommage est listé. La conversion a lieu dans votre navigateur, sans jamais envoyer le fichier.

Convertir un CSV en XML, étape par étape

  1. Cliquez sur Ouvrir un fichier, déposez un fichier .csv, .tsv ou .txt sur l’outil, ou choisissez Coller. Si les colonnes semblent fausses, vérifiez le séparateur et l’encodage dans Paramètres d’importation.
  2. Nommez l’Élément racine et l’Élément de ligne (rows et row par défaut) selon ce qu’attend le système destinataire.
  3. Réglez Valeurs en, le traitement des valeurs vides, l’Indentation et la déclaration, puis choisissez Copier ou Télécharger en XML.

Si le système qui lira le fichier attend des noms de balises précis, renommez d’abord les colonnes du CSV avec Renommer et réorganiser les colonnes d’un CSV : aucun renommage automatique ne sera alors nécessaire.

Options de structure XML

Éléments enfantsLe réglage par défaut : <row><Customer>Smith &amp; Sons</Customer>…</row>. Conserve les sauts de ligne des valeurs et convient à la plupart des outils d’import.
AttributsUn élément auto-fermant par ligne : <row Customer="Smith &amp; Sons" …/>. Format compact ; les tabulations et sauts de ligne des valeurs sont écrits &#9;, &#10; et &#13; pour qu’un analyseur XML les conserve.
Omettre les valeurs videsDésactivé par défaut : une cellule vide devient un élément vide comme <Ship_date/>. Activé, l’élément ou l’attribut est omis pour cette ligne.
Indentation2 espaces (par défaut), 4 espaces, ou Aucune (minifié), qui écrit tout le document sur une seule ligne.
Ajouter la déclaration XMLActivé par défaut : la première ligne est <?xml version="1.0" encoding="UTF-8"?>. Désactivez cette option si le XML doit être intégré à un autre document.

Les noms de la racine et des lignes suivent les mêmes règles que les en-têtes ; une saisie vide ou invalide revient à rows ou row, ou reçoit un trait de soulignement en préfixe.

Comment les noms de colonnes deviennent des noms XML

  • Les espaces deviennent _, ainsi que tout caractère autre que lettres, chiffres, ., - et _ : Total (EUR) → Total__EUR_, e-mail:work → e-mail_work. Les deux-points sont remplacés : aucun préfixe d’espace de noms n’est donc créé.
  • Un nom qui commence par un chiffre, . ou - reçoit un trait de soulignement en tête (2024 total → _2024_total) ; de même pour un nom qui commence par xml, quelle que soit la casse, car XML réserve ce préfixe (xml_ref → _xml_ref).
  • Si deux en-têtes aboutissent au même nom, le second reçoit _2 (a b et a_b → a_b, a_b_2). Les noms XML sont sensibles à la casse : Name et name restent distincts.
  • Les lettres de toutes les écritures sont conservées : Größe et 価格 sont des noms XML valides. Un en-tête vide devient d’abord Column 7, puis Column_7.
  • Chaque renommage est listé sous les options au format old → new (ancien → nouveau), et un avertissement au-dessus de l’aperçu en donne le nombre.

Comment les valeurs sont écrites

  • &, < et > sont échappés dans le texte des éléments ; dans les attributs, " l’est aussi. Pour le reste, les valeurs sont écrites exactement comme dans le CSV : 00731 garde ses zéros et aucun type n’est deviné.
  • XML 1.0 interdit la plupart des caractères de contrôle (U+0000–U+001F, sauf tabulation, saut de ligne et retour chariot), U+FFFE, U+FFFF et les demi-codets d’indirection isolés, même échappés. Ils sont supprimés et le nombre de valeurs concernées est affiché.
  • Les virgules, guillemets et sauts de ligne entre guillemets sont lus selon la RFC 4180 ; un saut de ligne reste un vrai saut de ligne dans un élément enfant.
  • Le résultat est toujours en UTF-8.

Quand un analyseur XML ou une importation refuse le fichier

  • Mon outil d’import ne trouve pas un champ. Il a probablement été renommé. Consultez la liste sous les options, puis renommez la colonne dans le CSV ou adaptez la correspondance dans le système destinataire.
  • Un analyseur XML signale une erreur d’encodage. Ouvrez le fichier source avec son véritable encodage dans les paramètres d’importation : le XML n’est en UTF-8 correct que si le CSV a été décodé correctement.
  • Tout se retrouve dans un seul élément. Le séparateur a été mal deviné ; choisissez Virgule, Point-virgule, Tabulation ou Barre verticale dans les paramètres d’importation.
  • Il me faut du CDATA, des espaces de noms ou un schéma. Le convertisseur écrit uniquement des éléments et des attributs simples ; ajoutez ces éléments dans une étape ultérieure.

Limites et confidentialité

Les fichiers jusqu’à 25 Mo, 100 000 lignes ou 2 millions de cellules s’ouvrent avec un aperçu en direct des 200 premières lignes. Les fichiers plus gros sont convertis en flux : le fichier est lu deux fois par morceaux (une fois pour mesurer les colonnes, une fois pour écrire), un avertissement précise que le téléchargement couvre tout le fichier, et Copier n’est pas proposé. Un fichier produit est plafonné à 4 Go.

La conversion s’exécute dans un worker en arrière-plan, dans cet onglet : la page reste réactive et Annuler l’interrompt. Le CSV n’est jamais envoyé sur un serveur.

Exemple : un export de commandes dont les en-têtes doivent être renommés

Un export de commandes avec des espaces et des parenthèses dans les en-têtes, une esperluette, des chevrons et une date vide, converti avec les réglages par défaut. Trois en-têtes sont renommés ; la valeur vide de Ship date devient <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>

Questions fréquentes

Pourquoi le nom de ma colonne a-t-il changé ?

Un nom d’élément XML ne peut contenir ni espaces ni la plupart des signes de ponctuation, et ne peut commencer ni par un chiffre ni par xml. Le convertisseur applique la plus petite modification qui donne un nom valide et unique, et liste chacune d’elles.

Faut-il utiliser des éléments ou des attributs ?

Utilisez des éléments enfants, sauf si le système destinataire demande des attributs. Les éléments conservent les sauts de ligne tels qu’ils sont écrits ; les analyseurs XML normalisent les blancs dans les valeurs d’attribut, c’est pourquoi le convertisseur encode les tabulations et les sauts de ligne en références de caractères.

Les nombres ou les dates reçoivent-ils un type ?

Non. XML n’a pas de types de valeurs intégrés : chaque valeur est écrite sous forme du texte du CSV. Les types viennent du schéma ou du programme qui lit le fichier.

Normes et références