API XML vers JSON#

Convertissez un fichier XML en JSON avec une seule requête vers POST /v1/convert/xml-to-json. Le convertisseur déballe automatiquement les enveloppes <root> et <root><item> pour une sortie propre, représente les attributs XML par des clés @attr et le contenu textuel par #text, et transforme les éléments frères répétés en tableaux JSON. Les réponses renvoient les octets JSON bruts par défaut, ou des métadonnées avec une URL de téléchargement présignée lorsque direct_download=false.


Endpoint#

POST /v1/convert/xml-to-json

Content-Type : multipart/form-data

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

Format de sortie : .json (application/json)


Authentification#

Nécessite soit une clé API privée, soit un jeton JWT issu d'une clé publique.

X-API-Key: sk_live_your_private_key

Ou :

Authorization: Bearer <jwt_token>

Paramètres de la requête#

Paramètre Type Requis Par défaut Description
file file Oui -- Le fichier .xml à convertir. Doit être encodé en UTF-8.
output_filename string Non Nom du fichier d'entrée Nom de fichier de sortie personnalisé. L'extension .json est ajoutée automatiquement.
direct_download boolean Non true Lorsque true, renvoie les octets JSON bruts. Lorsque false, renvoie des métadonnées avec une URL de téléchargement présignée.

Règles de conversion#

  • XML simple -- déballe automatiquement <root> : xml <root><name>Alice</name><age>30</age></root> Devient : json {"name": "Alice", "age": "30"}

  • Les éléments répétés deviennent un tableau JSON (déballe automatiquement <root> et <item>) : xml <root><item><id>1</id></item><item><id>2</id></item></root> Devient : json [{"id": "1"}, {"id": "2"}]

  • Les attributs XML sont préfixés par @ : xml <user id="1" role="admin">Alice</user> Devient : json {"@id": "1", "@role": "admin", "#text": "Alice"}

La sortie est du JSON formaté avec une indentation de 2 espaces et l'unicode préservé. Les éléments frères répétés portant le même nom de balise deviennent automatiquement un tableau JSON.


Réponse#

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

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

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

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

Exemples de code#

Python#

import requests

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

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

Node.js#

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

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

const json = await response.json();

PHP#

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

Go#

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

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

Réponses d'erreur#

Statut Condition
400 Bad Request Le fichier n'est pas un fichier .xml
400 Bad Request Échec de la conversion XML vers JSON (XML invalide)
401 Unauthorized Clé API / jeton JWT manquant ou invalide
402 Payment Required Limite mensuelle de conversions atteinte
413 Payload Too Large Le fichier dépasse la taille maximale du forfait

Limites#

Limite Valeur
Taille de fichier max Dépend du forfait (Free : 5 MB)
Encodage d'entrée UTF-8 uniquement
Conversions mensuelles Dépend du forfait

Questions fréquentes#

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

Envoyez une requête POST multipart/form-data à /v1/convert/xml-to-json avec votre fichier .xml dans le champ file, authentifiée avec un en-tête X-API-Key ou un jeton JWT Authorization: Bearer. La réponse est du JSON formaté avec une indentation de 2 espaces.

Comment les attributs XML sont-ils représentés dans la sortie JSON ?#

Les attributs sont préfixés par @ et le contenu textuel de l'élément devient une clé #text, donc <user id="1" role="admin">Alice</user> est converti en {"@id": "1", "@role": "admin", "#text": "Alice"}.

Comment les éléments XML répétés sont-ils convertis en JSON ?#

Les éléments frères répétés portant le même nom de balise deviennent automatiquement un tableau JSON, et les enveloppes <root> plus <item> sont déballées automatiquement — <root><item>...</item><item>...</item></root> devient un tableau JSON de premier niveau.

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

Oui. Définissez direct_download=false pour recevoir des métadonnées avec presigned_url, object_key, filename, file_size et conversion_time_seconds au lieu des octets JSON bruts.

Pourquoi l'API XML vers JSON renvoie-t-elle 400 Bad Request ?#

Un 400 est renvoyé lorsque le fichier n'est pas un fichier .xml ou que le XML est invalide et que la conversion échoue. Les fichiers trop volumineux renvoient 413 Payload Too Large, et le dépassement de votre limite mensuelle de conversions renvoie 402 Payment Required.