API CSV vers XML#

L'API CSV vers XML convertit un fichier CSV au format XML en une seule requête vers POST /v1/convert/csv-to-xml. Envoyez un fichier .csv UTF-8 en multipart form data. Les en-têtes de colonnes de la première ligne deviennent les noms de balises XML, et chaque ligne suivante devient un élément <item> à l'intérieur d'un conteneur <root>. La réponse est du XML brut par défaut, ou définissez direct_download=false pour des métadonnées avec une URL de téléchargement présignée.


Endpoint#

POST /v1/convert/csv-to-xml

Content-Type : multipart/form-data

Entrée acceptée : fichiers .csv (encodés en UTF-8)

Format de sortie : .xml (application/xml)


Authentification#

Nécessite une clé API privée ou un token JWT obtenu à partir d'une clé publique.

X-API-Key: sk_your_private_key

Ou :

Authorization: Bearer <jwt_token>

Paramètres de requête#

Paramètre Type Obligatoire Défaut Description
file file Oui -- Le fichier .csv à convertir. La première ligne doit contenir les en-têtes de colonnes. Encodé en UTF-8.
output_filename string Non Nom du fichier d'entrée Nom de fichier de sortie personnalisé. L'extension .xml est ajoutée automatiquement.
direct_download boolean Non true À true, renvoie les octets XML bruts. À false, renvoie des métadonnées avec une URL de téléchargement présignée.

Règles de conversion#

name,age,city
Alice,30,London
Bob,25,Paris

Devient :

<?xml version="1.0" encoding="utf-8"?>
<root>
  <item>
    <name>Alice</name>
    <age>30</age>
    <city>London</city>
  </item>
  <item>
    <name>Bob</name>
    <age>25</age>
    <city>Paris</city>
  </item>
</root>
  • La première ligne est traitée comme les en-têtes de colonnes (utilisés comme noms de balises XML)
  • Chaque ligne suivante devient un élément <item>
  • L'élément racine est toujours <root> (non configurable)
  • La sortie est mise en forme avec une indentation de 2 espaces
  • Le délimiteur est la virgule (non configurable)

Réponse#

Téléchargement direct (direct_download=true, par défaut)#

HTTP 200 OK
Content-Type: application/xml
Content-Disposition: inline; filename="data_20260405_123456789.xml"

Réponse avec métadonnées (direct_download=false)#

{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/csv-to-xml/data_20260405_123456789.xml",
    "filename": "data_20260405_123456789.xml",
    "file_size": 1234,
    "conversion_time_seconds": 0.03
}

Exemples de code#

Python#

import requests

with open("data.csv", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/csv-to-xml",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("data.csv", f, "text/csv")}
    )

with open("data.xml", "wb") as out:
    out.write(response.content)

Node.js#

const form = new FormData();
form.append("file", fs.createReadStream("data.csv"));

const response = await fetch("https://api.enconvert.com/v1/convert/csv-to-xml", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

const xml = await response.text();

PHP#

$ch = curl_init("https://api.enconvert.com/v1/convert/csv-to-xml");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("data.csv", "text/csv")]
]);
$xml = curl_exec($ch);
curl_close($ch);

Go#

body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "data.csv")
file, _ := os.Open("data.csv")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/csv-to-xml", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)

Réponses d'erreur#

Statut Condition
400 Bad Request Le fichier n'est pas un fichier .csv
400 Bad Request Le fichier CSV est vide ou ne contient aucune ligne valide
400 Bad Request Encodage CSV invalide (UTF-8 attendu)
401 Unauthorized Clé API ou token JWT manquant ou invalide
402 Payment Required Quota mensuel d'ops épuisé
413 Payload Too Large Le fichier dépasse la taille maximale du plan

Limites#

Limite Valeur
Taille max. de fichier Selon le plan (Founding : 5 MB)
Encodage d'entrée UTF-8 uniquement
Conversions mensuelles Selon le plan

Questions fréquentes#

Comment convertir du CSV en XML avec une API REST ?#

Envoyez une requête POST multipart/form-data vers POST /v1/convert/csv-to-xml avec votre fichier .csv dans le champ file, en vous authentifiant via un en-tête X-API-Key ou un token JWT Authorization: Bearer. Par défaut, le corps de la réponse contient les octets XML bruts.

Comment l'API fait-elle correspondre colonnes et lignes CSV aux éléments XML ?#

La première ligne CSV est traitée comme les en-têtes de colonnes et sert de noms de balises XML. Chaque ligne suivante devient un élément <item> à l'intérieur d'un conteneur <root>, avec une mise en forme indentée de 2 espaces.

Puis-je changer le nom de l'élément racine XML ou le délimiteur CSV ?#

Non. L'élément racine est toujours <root> et le délimiteur est la virgule. Ni l'un ni l'autre n'est configurable.

Pourquoi ma conversion CSV vers XML renvoie-t-elle une erreur 400 ?#

Un 400 Bad Request est renvoyé lorsque le fichier envoyé n'est pas un .csv, que le CSV est vide ou sans ligne valide, ou que l'encodage n'est pas UTF-8.

Puis-je obtenir une URL de téléchargement présignée au lieu du XML brut ?#

Oui. Définissez direct_download=false et l'API renvoie des métadonnées JSON incluant presigned_url, object_key, filename, file_size et conversion_time_seconds.