ToolDeck

CSV vers XML

Convertir des données CSV au format XML

Essayer un exemple

Entrée CSV

Sortie XML

Fonctionne localement · Sûr pour coller des secrets
Le résultat XML s'affichera ici…

Qu'est-ce que la conversion CSV vers XML ?

La conversion CSV vers XML transforme des valeurs séparées par des virgules en documents XML (Extensible Markup Language). Chaque ligne du CSV devient un élément XML, et chaque en-tête de colonne correspond au nom d'une balise enfant. Le résultat est un document hiérarchique et auto-descriptif que les systèmes peuvent valider via un schéma (XSD ou DTD) et traiter avec les outils XML standard tels que XSLT, XPath et les parseurs SAX/DOM.

XML est un standard d'échange de données depuis que le W3C a publié la spécification XML 1.0 en 1998. Bien que JSON ait remplacé XML dans de nombreuses API web, XML reste le format requis pour les services web SOAP, les flux RSS/Atom, les graphiques SVG, les documents Office Open XML (.docx, .xlsx), les fichiers de ressources Android, les configurations Maven/Gradle, ainsi que dans les secteurs réglementés comme la santé (HL7 CDA), la finance (FpML, XBRL) et l'administration (NIEM). Lorsque vos données sources proviennent d'un tableur ou d'un export de base de données, la conversion CSV vers XML est le moyen de les intégrer dans ces systèmes.

Un convertisseur CSV vers XML correct doit gérer les cas limites de la RFC 4180 : champs entre guillemets contenant des virgules ou des sauts de ligne, guillemets doublés pour l'échappement, et délimiteurs variables. Côté XML, il doit échapper les cinq entités XML prédéfinies (& < > " '), générer des noms d'éléments valides à partir des en-têtes (en remplaçant les espaces et les caractères spéciaux), et produire une sortie bien formée avec une déclaration XML correcte et un encodage cohérent.

Pourquoi utiliser un convertisseur CSV vers XML ?

Saisir du XML à la main à partir de données de tableur est lent et source d'erreurs. Une balise fermante oubliée ou une esperluette non échappée produit un XML invalide qui casse les parseurs en aval. Ce convertisseur gère l'analyse, l'échappement et la génération des éléments en une seule étape.

Conversion instantanée dans le navigateur
Collez du CSV et obtenez un XML bien formé avec une déclaration correcte, un élément racine et des éléments enfants imbriqués. Aucun outil en ligne de commande ni installation de bibliothèque requis.
🔒
Données confidentielles préservées
Toute la conversion s'exécute localement dans votre navigateur via JavaScript. Vos données CSV ne sont jamais envoyées à un serveur, jamais journalisées et jamais stockées en dehors de votre machine.
🎯
XML valide et bien formé
La sortie échappe les entités XML, assainit les noms d'en-têtes en balises d'éléments valides, et produit un balisage correctement imbriqué qui passe n'importe quel validateur ou linter XML.
📋
Prise en charge de tous les dialectes CSV
Détecte automatiquement les virgules, points-virgules, tabulations et barres verticales comme délimiteurs. Prend en charge les règles de la RFC 4180 incluant les guillemets doublés, les champs multilignes et les fichiers UTF-8 avec BOM.

Cas d'usage de la conversion CSV vers XML

Intégration SOAP et APIs legacy
De nombreux systèmes d'entreprise utilisent encore des services web SOAP qui requièrent des corps de requête XML. Convertissez un export CSV en payloads XML correspondant au schéma WSDL du service avant d'envoyer les requêtes.
Fichiers de configuration de build
Générez des listes de dépendances Maven pom.xml, des fichiers de ressources Android ou des définitions de beans Spring à partir d'un tableur de dépendances, de chaînes ou d'entrées de configuration. Produisez des configurations XML en lot depuis une source CSV unique.
ETL dans les pipelines de données
Injectez des exports CSV de bases de données ou d'outils analytiques dans des pipelines ETL basés sur XML. Des outils comme Apache NiFi, Talend et SSIS acceptent des entrées XML pour des workflows de transformation nécessitant une validation de schéma à chaque étape.
Rapports réglementaires et de conformité
Des secteurs comme la santé (HL7 CDA), la finance (XBRL, FpML) et l'administration (NIEM) imposent des soumissions au format XML. Convertissez des données de conformité tabulaires dans la structure XML requise avant soumission.
Génération de flux RSS et Atom
Transformez une liste CSV d'articles, de titres et de dates en flux RSS 2.0 ou Atom. Les workflows de gestion de contenu démarrent souvent depuis un tableur de publications à diffuser sous forme de flux de syndication.
Apprentissage des fondamentaux XML
Les étudiants qui apprennent XML peuvent coller des données CSV familières et observer la hiérarchie d'éléments, l'imbrication et l'échappement des entités qui en résultent. Comparer entrée et sortie rend concrets des concepts abstraits comme la bonne formation et la validité.

Référence de correspondance CSV vers XML

Comprendre comment chaque partie d'un fichier CSV correspond à la structure XML vous aide à anticiper le format de sortie et à ajuster vos données avant la conversion.

Concept CSVÉquivalent XMLDétails
CSV fileXML documentThe entire file maps to a root element containing all records
Header rowElement tag namesEach column header becomes the tag name for child elements
Data row<row> elementEach row becomes a repeating child element of the root
Cell valueText nodeCell content becomes the text inside the corresponding tag
Empty cellEmpty element or omittedCan be rendered as <field/> or excluded from output
Comma delimiterXML structureDelimiters are replaced by element nesting and closing tags

CSV vs XML

CSV est un format plat basé sur des délimiteurs, sans schéma ni types de données intégrés. XML est un langage de balisage hiérarchique et auto-descriptif qui prend en charge les schémas, les espaces de noms et l'imbrication complexe. Le choix entre les deux dépend des exigences de votre système cible.

CSV
Texte brut, un enregistrement par ligne. Pas de types de données : chaque valeur est une chaîne. Pas de hiérarchie ni d'imbrication. Taille de fichier minimale. Universellement supporté par les tableurs, les bases de données et les langages de script. Défini par la RFC 4180. Idéal pour le transfert simple de données tabulaires entre systèmes qui connaissent tous deux la disposition des colonnes.
XML
Balisage hiérarchique avec des balises ouvrantes et fermantes. Prend en charge les attributs, les espaces de noms, le contenu mixte et les sections CDATA. Peut être validé contre des schémas XSD ou DTD. Traité par XSLT, XPath, SAX et DOM. Taille de fichier supérieure au CSV en raison du surcoût des balises. Requis par les APIs SOAP, Office Open XML, RSS/Atom et de nombreux secteurs réglementés.

Exemples de code

Voici des exemples fonctionnels de conversion CSV vers XML dans différents langages. Chaque exemple analyse la première ligne du CSV comme noms de balises d'éléments, encapsule chaque ligne de données dans un élément conteneur, et échappe les entités XML dans le contenu des cellules.

JavaScript (browser / Node.js)
// CSV string → XML with proper escaping
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

function csvToXml(csv, rootTag = 'data', rowTag = 'row') {
  const rows = csv.trim().split('\n').map(r => r.split(','))
  const [headers, ...data] = rows
  const xmlRows = data.map(row => {
    const fields = headers.map((h, i) => {
      const val = (row[i] || '').replace(/&/g, '&amp;')
        .replace(/</g, '&lt;').replace(/>/g, '&gt;')
      return `    <${h}>${val}</${h}>`
    }).join('\n')
    return `  <${rowTag}>\n${fields}\n  </${rowTag}>`
  }).join('\n')
  return `<?xml version="1.0" encoding="UTF-8"?>\n<${rootTag}>\n${xmlRows}\n</${rootTag}>`
}

console.log(csvToXml(csv))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <data><row><name>Alice</name><age>30</age>...</row>...</data>
Python
import csv, io
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.DictReader(io.StringIO(csv_string))
root = Element('data')

for row in reader:
    row_el = SubElement(root, 'row')
    for key, value in row.items():
        child = SubElement(row_el, key)
        child.text = value

# Pretty-print with declaration
raw = tostring(root, encoding='unicode')
pretty = parseString(raw).toprettyxml(indent='  ')
print(pretty)
# → <?xml version="1.0" ?>
# → <data>
# →   <row>
# →     <name>Alice</name>
# →     <age>30</age>
# →     <city>Berlin</city>
# →   </row>
# →   ...
# → </data>
Go
package main

import (
	"encoding/csv"
	"encoding/xml"
	"fmt"
	"os"
	"strings"
)

type Field struct {
	XMLName xml.Name
	Value   string `xml:",chardata"`
}

type Row struct {
	XMLName xml.Name `xml:"row"`
	Fields  []Field
}

type Data struct {
	XMLName xml.Name `xml:"data"`
	Rows    []Row
}

func main() {
	input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	r := csv.NewReader(strings.NewReader(input))
	records, _ := r.ReadAll()
	headers := records[0]

	var data Data
	for _, rec := range records[1:] {
		row := Row{}
		for i, h := range headers {
			row.Fields = append(row.Fields, Field{
				XMLName: xml.Name{Local: h},
				Value:   rec[i],
			})
		}
		data.Rows = append(data.Rows, row)
	}

	out, _ := xml.MarshalIndent(data, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <data><row><name>Alice</name>...</row>...</data>
}
CLI (csvkit / xmlstarlet)
# Using Python's csv and xml modules via one-liner
python3 -c "
import csv, sys
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

reader = csv.DictReader(sys.stdin)
root = Element('data')
for row in reader:
    r = SubElement(root, 'row')
    for k, v in row.items():
        SubElement(r, k).text = v
print(parseString(tostring(root, encoding='unicode')).toprettyxml(indent='  '))
" < data.csv

# Using Miller (mlr) — a dedicated CSV/JSON/XML tool
mlr --icsv --oxml cat data.csv

Questions fréquentes

Comment fonctionne la conversion CSV vers XML ?
Le convertisseur lit la première ligne de votre CSV comme en-têtes de colonnes. Chaque ligne suivante devient un élément XML, et chaque valeur de cellule est encapsulée dans un élément enfant nommé d'après son en-tête de colonne. Le résultat est un document XML bien formé avec un élément racine contenant un élément enfant par ligne de données.
Que se passe-t-il avec les caractères spéciaux comme & et < dans mes données CSV ?
Le convertisseur échappe les cinq entités XML prédéfinies : & devient &amp;, < devient &lt;, > devient &gt;, " devient &quot;, et ' devient &apos;. Cela produit un XML valide qui ne cassera pas les parseurs ni ne provoquera d'erreurs de bonne formation.
Puis-je utiliser des noms de balises personnalisés pour les éléments racine et de ligne ?
Oui. L'outil permet de définir le nom de l'élément racine (par défaut : "data") et le nom de l'élément de ligne (par défaut : "row"). Les en-têtes de colonnes du CSV deviennent toujours les noms des éléments enfants. Si un en-tête contient des espaces ou des caractères invalides dans les noms d'éléments XML, l'outil les assainit automatiquement.
Quelle est la différence entre CSV vers XML et CSV vers JSON ?
CSV vers XML produit un document de balisage hiérarchique avec des balises ouvrantes/fermantes, une déclaration XML et la prise en charge de la validation de schéma (XSD/DTD). CSV vers JSON produit un tableau d'objets clé-valeur plus léger. Utilisez XML quand votre système cible l'exige (APIs SOAP, formats réglementés, flux RSS). Utilisez JSON pour les APIs REST, les frontends JavaScript et les bases de données NoSQL.
Comment valider le XML généré ?
Collez la sortie dans n'importe quel validateur XML pour vérifier la bonne formation (imbrication correcte, échappement des entités, balises correspondantes). Pour la validation de schéma, fournissez un fichier XSD et utilisez un outil comme xmllint, Xerces ou un validateur XSD en ligne. Le XML produit par cet outil est toujours bien formé, mais la validité par rapport au schéma dépend de l'adéquation entre la structure et votre schéma cible.
Le convertisseur gère-t-il les grands fichiers CSV ?
L'outil s'exécute dans votre navigateur, donc les performances dépendent de la mémoire disponible. Les fichiers jusqu'à quelques mégaoctets (dizaines de milliers de lignes) se convertissent sans problème sur du matériel moderne. Pour les très grands fichiers (100 Mo et plus), envisagez un outil en ligne de commande comme les modules csv et xml.etree de Python ou les packages encoding/csv et encoding/xml de Go, qui traitent les données en flux sans tout charger en mémoire.
Le XML généré est-il compatible avec les transformations XSLT ?
Oui. La sortie est du XML bien formé standard avec une déclaration et une structure d'éléments cohérente. Vous pouvez appliquer n'importe quelle feuille de style XSLT pour le transformer en HTML, en un autre schéma XML ou en texte brut. La structure prévisible (root > row > éléments de champ) facilite l'écriture de sélecteurs XPath et de templates XSLT.