---
seo_title: XML in JSON API | XML-Dateien in JSON konvertieren | EnConvert
meta_desc: Konvertieren Sie XML in JSON mit POST /v1/convert/xml-to-json. Attribute werden zu @-Keys, wiederholte Elemente zu Arrays, Root-Wrapper werden automatisch entfernt.
keywords: xml zu json api, xml in json umwandeln api, xml to json converter api, xml datei in json konvertieren, xml attribute in json, xml in json array umwandeln, rest api xml nach json, xml parsen json api
---

# XML in JSON API

Konvertieren Sie eine XML-Datei mit einem einzigen Request an `POST /v1/convert/xml-to-json` in JSON. Der Konverter entfernt `<root>`- und `<root><item>`-Wrapper automatisch für eine saubere Ausgabe, stellt XML-Attribute als `@attr`-Keys und Textinhalte als `#text` dar und wandelt wiederholte Geschwisterelemente in JSON-Arrays um. Antworten liefern standardmäßig rohe JSON-Bytes oder bei `direct_download=false` Metadaten mit einer Presigned-Download-URL.

---

## Endpunkt

```
POST /v1/convert/xml-to-json
```

**Content-Type:** `multipart/form-data`

**Akzeptierte Eingabe:** `.xml`-Dateien (UTF-8-kodiert)

**Ausgabeformat:** `.json` (`application/json`)

---

## Authentifizierung

Erfordert entweder einen privaten API-Key oder ein von einem Public Key ausgestelltes JWT-Token.

```
X-API-Key: sk_your_private_key
```

Oder:

```
Authorization: Bearer <jwt_token>
```

---

## Request-Parameter

| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|-----------|------|----------|---------|-------------|
| `file` | file | Ja | -- | Die zu konvertierende `.xml`-Datei. Muss UTF-8-kodiert sein. |
| `output_filename` | `string` | Nein | Eingabedateiname | Eigener Ausgabedateiname. Die Endung `.json` wird automatisch angehängt. |
| `direct_download` | `boolean` | Nein | `true` | Bei `true` werden rohe JSON-Bytes zurückgegeben. Bei `false` Metadaten mit einer Presigned-Download-URL. |

---

## Konvertierungsregeln

- **Einfaches XML** -- `<root>` wird automatisch entfernt:
  ```xml
  <root><name>Alice</name><age>30</age></root>
  ```
  Wird zu:
  ```json
  {"name": "Alice", "age": "30"}
  ```

- **Wiederholte Elemente** werden zu einem JSON-Array (`<root>` und `<item>` werden automatisch entfernt):
  ```xml
  <root><item><id>1</id></item><item><id>2</id></item></root>
  ```
  Wird zu:
  ```json
  [{"id": "1"}, {"id": "2"}]
  ```

- **XML-Attribute** erhalten das Präfix `@`:
  ```xml
  <user id="1" role="admin">Alice</user>
  ```
  Wird zu:
  ```json
  {"@id": "1", "@role": "admin", "#text": "Alice"}
  ```

Die Ausgabe ist formatiertes (pretty-printed) JSON mit 2 Leerzeichen Einrückung und erhaltenem Unicode. Wiederholte Geschwisterelemente mit demselben Tag-Namen werden automatisch zu einem JSON-Array.

---

## Antwort

### Direkter Download (`direct_download=true`, Standard)

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

### Metadaten-Antwort (`direct_download=false`)

```json
{
    "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
}
```

---

## Codebeispiele

### Python

```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_your_private_key"},
        files={"file": ("data.xml", f, "application/xml")}
    )

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

### Node.js

```javascript
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_your_private_key" },
    body: form
});

const json = await response.json();
```

### PHP

```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_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("data.xml", "application/xml")]
]);
$json = curl_exec($ch);
curl_close($ch);
```

### Go

```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_your_private_key")
resp, _ := http.DefaultClient.Do(req)
```

---

## Fehlerantworten

| Status | Bedingung |
|--------|-----------|
| `400 Bad Request` | Datei ist keine `.xml`-Datei |
| `400 Bad Request` | XML-zu-JSON-Konvertierung fehlgeschlagen (ungültiges XML) |
| `401 Unauthorized` | Fehlender oder ungültiger API-Key / JWT-Token |
| `402 Payment Required` | Monatliches Ops-Kontingent aufgebraucht |
| `413 Payload Too Large` | Datei überschreitet die maximale Dateigröße des Plans |

---

## Limits

| Limit | Wert |
|-------|-------|
| Maximale Dateigröße | Planabhängig (Founding: 5 MB) |
| Eingabekodierung | Nur UTF-8 |
| Monatliche Konvertierungen | Planabhängig |

## Häufig gestellte Fragen

### Wie konvertiere ich XML in JSON über eine REST API?

Senden Sie einen `multipart/form-data`-POST-Request an `/v1/convert/xml-to-json` mit Ihrer `.xml`-Datei im Feld `file`, authentifiziert mit einem `X-API-Key`-Header oder einem JWT `Authorization: Bearer`-Token. Die Antwort ist formatiertes JSON mit 2 Leerzeichen Einrückung.

### Wie werden XML-Attribute in der JSON-Ausgabe dargestellt?

Attribute erhalten das Präfix `@`, und der Textinhalt eines Elements wird zu einem `#text`-Key, sodass `<user id="1" role="admin">Alice</user>` zu `{"@id": "1", "@role": "admin", "#text": "Alice"}` konvertiert wird.

### Wie werden wiederholte XML-Elemente in JSON konvertiert?

Wiederholte Geschwisterelemente mit demselben Tag-Namen werden automatisch zu einem JSON-Array, und `<root>`- sowie `<item>`-Wrapper werden automatisch entfernt. `<root><item>...</item><item>...</item></root>` wird zu einem JSON-Array auf oberster Ebene.

### Kann ich statt des rohen JSON eine Presigned-Download-URL erhalten?

Ja. Setzen Sie `direct_download=false`, um statt roher JSON-Bytes Metadaten mit `presigned_url`, `object_key`, `filename`, `file_size` und `conversion_time_seconds` zu erhalten.

### Warum gibt die XML-zu-JSON-API 400 Bad Request zurück?

Ein `400` wird zurückgegeben, wenn die Datei keine `.xml`-Datei ist oder das XML ungültig ist und die Konvertierung fehlschlägt. Zu große Dateien geben `413 Payload Too Large` zurück, und beim Aufbrauchen Ihres monatlichen Ops-Kontingents kommt `402 Payment Required`.
