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.