JSON zu XML Konverter
JSON einfügen und sofort XML erhalten. Konvertiert Objekte, Arrays und @_-Attribute im Browser — nichts wird hochgeladen. Kostenlos, privat, keine Anmeldung erforderlich.
Optionen · 2 Leerzeichen · JSON → XML
Was ist JSON-zu-XML-Konvertierung und wie funktioniert sie?
JSON (JavaScript Object Notation) und XML (Extensible Markup Language) sind beides strukturierte Datenformate, haben aber grundlegend unterschiedliche Modelle: JSON ist ein Baum aus Objekten, Arrays, Zeichenketten, Zahlen, booleschen Werten und null ohne Konzept von Attributen oder Dokumentwurzel-Einschränkungen; XML ist ein Baum aus Elementen, die Attribute und Textinhalt tragen können, und das Dokument muss genau ein Wurzelelement haben. Die Konvertierung von JSON zu XML erfordert einen Satz von Konventionen, um diese Modellunterschiede zu überbrücken.
Dieses Werkzeug verwendet die am weitesten verbreitete Konvention — dieselbe, die von fast-xml-parser (Node.js), xmltodict (Python) und JAXB (Java) verwendet wird — in umgekehrter Richtung:
**1. Wurzelelement-Normalisierung.** Der wichtigste Unterschied zwischen JSON und XML ist die Wurzel-Einschränkung. JSON hat kein Wurzel-Konzept; XML erfordert genau eines. Der Konverter behandelt vier Fälle automatisch. Ein Objekt mit einem einzigen Schlüssel verwendet diesen Schlüssel als XML-Wurzel: { "config": {...} } →
**2. @_-Präfix → XML-Attribute.** JSON-Schlüssel mit dem Präfix @_ werden zu XML-Attributen des umgebenden Elements. { "element": { "@_id": "42", "@_class": "primary" } } erzeugt
**3. #text → Elementtextinhalt.** Wenn ein Element sowohl Attribute als auch Textinhalt benötigt, wird der Text unter dem #text-Schlüssel gespeichert: { "price": { "@_currency": "USD", "#text": "29.99" } } →
**4. Arrays → wiederholte gleichnamige Geschwisterelemente.** XML erlaubt mehrere Kindelemente mit demselben Namen; JSON verwendet Arrays für geordnete Listen. Ein JSON-Array unter einem Schlüssel erzeugt wiederholte Kindelemente, die den Schlüsselnamen wiederverwenden: { "items": ["a", "b"] } erzeugt
**5. Symmetrisch mit XML-zu-JSON.** Die hier verwendeten @_- und #text-Konventionen sind exakt dieselben, die vom Begleit-XML zu JSON Konverter verwendet werden. Das bedeutet, ein JSON → XML → JSON-Round-Trip bewahrt Attribute, Textinhalt und Elementstruktur — solange die JSON-Eingabe den @_/#text-Konventionen folgt.
**Wann JSON zu XML konvertieren?** Die häufigsten Szenarien sind: (1) Daten an einen Legacy-SOAP- oder XML-basierten Webdienst senden, der einen XML-Anfrage-Body erfordert; (2) XML-Konfigurationsdateien (Spring, Maven, Ant, Android-Ressourcen) aus JSON-Daten generieren; (3) sitemap.xml oder RSS-Feed-XML aus JSON-Inhaltsdaten erzeugen; (4) Interoperabilität mit Enterprise-Systemen (ERP, CRM, EDI), die XML konsumieren; (5) SVG oder andere XML-basierte Grafikformate programmatisch aus JSON-Daten generieren. Für die Formatierung und Validierung des resultierenden XML nutzen Sie den XML-Formatierer.
// Convert JSON to XML in Node.js using fast-xml-parser
import { XMLBuilder } from 'fast-xml-parser';
const data = {
catalog: {
product: {
'@_id': 'P01',
'@_category': 'electronics',
name: 'Wireless Headphones',
price: {
'@_currency': 'USD',
'#text': '79.99'
}
}
}
};
const builder = new XMLBuilder({
attributeNamePrefix: '@_', // @_ keys become XML attributes
textNodeName: '#text', // #text key becomes element text content
ignoreAttributes: false, // process @_ attribute keys
format: true, // pretty-print with indentation
indentBy: ' ', // 2-space indent
});
const xml = builder.build(data);
console.log(xml);
// <catalog>
// <product id="P01" category="electronics">
// <name>Wireless Headphones</name>
// <price currency="USD">79.99</price>
// </product>
// </catalog> Hauptfunktionen
Live-Konvertierung
Die XML-Ausgabe wird sofort aktualisiert, während Sie JSON tippen oder einfügen — keine Schaltfläche „Konvertieren” nötig. Große Eingaben (>200 KB) schalten automatisch in den manuellen Modus um, um den Browser reaktionsfähig zu halten.
Automatische Wurzelnormalisierung
XML erfordert genau ein Wurzelelement. Objekte mit einem Schlüssel verwenden ihren Schlüssel als Wurzel; Objekte mit mehreren Schlüsseln werden in
@_-Attribut- und #text-Konvention
Mit @_ präfixierte Schlüssel werden zu XML-Attributen; der #text-Schlüssel wird zum Elementtextinhalt. Dies entspricht der fast-xml-parser- und xmltodict-Konvention und macht die Ausgabe symmetrisch mit dem Begleit-XML-zu-JSON-Konverter.
Array zu wiederholten Elementen
JSON-Arrays unter einem Schlüssel erzeugen wiederholte Kindelemente, die den Schlüsselnamen ohne Singularisierung wiederverwenden. { "items": [1, 2, 3] } ergibt drei
100 % browserbasierte Privatsphäre
Die gesamte Konvertierung läuft lokal in Ihrem Browser mit JavaScript. Ihr JSON — einschließlich Zugangsdaten, interner Konfigurationen und sensibler Payloads — wird niemals an einen Server gesendet, niemals protokolliert und niemals gespeichert.
Symmetrischer Round-Trip mit XML zu JSON
Die @_- und #text-Konventionen sind mit dem Begleit-XML-zu-JSON-Konverter geteilt. Ein JSON → XML → JSON-Round-Trip bewahrt Attribute, Textinhalt und verschachtelte Strukturen zuverlässig.
Beispiele
API-Antwortobjekt
{"user":{"id":42,"name":"Alice Kim","email":"alice@example.com","role":"admin","address":{"city":"Seoul","country":"KR"}}} Ein JSON-Objekt mit einem einzigen Schlüssel, bei dem der oberste Schlüssel das XML-Wurzelelement wird. Das verschachtelte address-Objekt erzeugt ein
-Kindelement mitArray auf oberster Ebene
[{"id":1,"name":"Widget A","price":9.99},{"id":2,"name":"Widget B","price":14.99},{"id":3,"name":"Widget C","price":4.49}] Wenn die gesamte Eingabe ein JSON-Array ist (nicht in einem Objekt eingeschlossen), erzeugt der Konverter
Objekt mit Attributen und Textinhalt
{"catalog":{"product":{"@_id":"P01","@_category":"electronics","name":"Wireless Headphones","price":{"@_currency":"USD","#text":"79.99"}}}} Mit @_ präfixierte Schlüssel werden zu XML-Attributen des Elements: @_id wird zu id="P01" und @_category zu category="electronics" am
Anleitung
- 1
JSON einfügen
Geben Sie Ihre JSON-Daten in das Eingabefeld oben ein oder fügen Sie sie ein. Sie können auch auf „Beispiel laden” klicken, um ein Beispiel auszuprobieren — ein API-Antwortobjekt, einen Array-Payload oder ein Objekt mit @_-Attributen und #text.
- 2
Live-XML-Ausgabe ansehen
XML erscheint sofort im Ausgabebereich. Objekte mit einem Schlüssel verwenden ihren Schlüssel als Wurzel; Objekte mit mehreren Schlüsseln werden in
eingeschlossen; @_-präfixierte Schlüssel werden zu Attributen; Arrays werden zu wiederholten Kindelementen. Passen Sie die Einrückung (2 oder 4 Leerzeichen) nach Bedarf an. - 3
Kopieren oder Herunterladen
Klicken Sie auf „Kopieren”, um das XML in die Zwischenablage zu übernehmen, oder auf „Herunterladen”, um es als .xml-Datei zu speichern. Um das Ergebnis zu validieren oder neu zu formatieren, fügen Sie es in den XML-Formatierer ein.
Häufige Konvertierungsfehler
Objekt mit mehreren Schlüsseln erhält unerwarteten -Wrapper
Wenn Ihr oberstes JSON mehrere Schlüssel hat, schließt die Ausgabe sie alle in
// Input: { "status": 200, "data": { "id": 1 } }
// Output: <root><status>200</status><data><id>1</id></data></root>
// Root is <root> — may not match your schema // Wrap in a named key to control the root element
// Input: { "response": { "status": 200, "data": { "id": 1 } } }
// Output: <response><status>200</status><data><id>1</id></data></response> Array auf oberster Ebene erhält - -Wrapper
Ein JSON-Array auf oberster Ebene hat keinen Elementnamen, daher wird es als
// Input: [{ "id": 1 }, { "id": 2 }]
// Output: <root><item><id>1</id></item><item><id>2</id></item></root>
// Tag names are generic // Wrap in a named key for meaningful tag names
// Input: { "products": [{ "id": 1 }, { "id": 2 }] }
// Output: <root><products><id>1</id></products><products><id>2</id></products></root>
// Each array element reuses the key name "products" as its tag @_-Präfix bei Attributschlüsseln fehlt
Um ein XML-Attribut zu erzeugen, muss der JSON-Schlüssel mit @_ präfixiert sein. Ohne das Präfix wird der Schlüssel als Kindelement behandelt, nicht als Attribut.
// Input: { "tag": { "id": "42", "name": "Alice" } }
// Output: <tag><id>42</id><name>Alice</name></tag> ← id is a child element // Use @_ prefix for attributes
// Input: { "tag": { "@_id": "42", "name": "Alice" } }
// Output: <tag id="42"><name>Alice</name></tag> ← id is an attribute Element mit Attributen und Text — #text fehlt
Wenn ein Element sowohl XML-Attribute als auch Textinhalt haben soll, müssen Sie den #text-Schlüssel für den Text verwenden. Ohne ihn hat der Text keinen Platz und das Element ist leer oder erzeugt einen Fehler.
// Input: { "price": { "@_currency": "USD", "value": "29.99" } }
// Output: <price currency="USD"><value>29.99</value></price>
// Text is a child element, not text content // Use #text for element text content
// Input: { "price": { "@_currency": "USD", "#text": "29.99" } }
// Output: <price currency="USD">29.99</price> ← text content JSON-Schlüssel mit XML-ungültigen Zeichen
XML-Elementnamen dürfen nicht mit einer Ziffer beginnen und keine Leerzeichen, Doppelpunkte (außer für Namespace-Präfixe) oder die meisten Sonderzeichen enthalten. Wenn Ihre JSON-Schlüssel diese Zeichen enthalten, ist die XML-Ausgabe fehlerhaft. Benennen Sie problematische Schlüssel vor der Konvertierung um oder bereinigen Sie sie in einem Nachverarbeitungsschritt.
// JSON key starts with digit — invalid XML element name
// Input: { "1stItem": "value" }
// Output: <1stItem>value</1stItem> ← invalid XML // Use a valid XML element name
// Input: { "firstItem": "value" }
// Output: <firstItem>value</firstItem> ← valid XML Sonderzeichen in Werten nicht maskiert
XML-Textinhalt darf keine rohen <, >, & oder "-Zeichen enthalten — sie müssen als <, >, & und " maskiert werden. Der Konverter maskiert diese Zeichen im Elementtextinhalt und in Attributwerten automatisch. Wenn nachgelagerte Verarbeitung sie doppelt maskiert, stellen Sie sicher, dass Ihr XML-Parser rohe XML-Bytes konsumiert und keine bereits maskierten Inhalte erneut maskiert.
// JSON: { "query": "name = 'Alice' & role = 'admin'" }
// Converter outputs: <query>name = 'Alice' & role = 'admin'</query>
// If double-processed: &amp; — consumer is re-escaping // Converter output is correct — consume it as XML, not as a raw string // <query>name = 'Alice' & role = 'admin'</query> // XML parser decodes to: name = 'Alice' & role = 'admin'
Häufige Anwendungsfälle
- SOAP- und Legacy-XML-Webdienste aufrufen
- Erstellen Sie den JSON-Payload in Ihrer Anwendung, konvertieren Sie ihn zu XML und senden Sie ihn per POST an den SOAP-Endpunkt. Das vermeidet das manuelle Aufbauen von XML-Zeichenketten und ermöglicht die Arbeit mit den Daten in einer nativen JSON-Struktur bis zu dem Moment, in dem Sie sie für den Legacy-Dienst serialisieren müssen.
- XML-Konfigurationsdateien generieren
- Spring, Maven, Ant, Tomcat und Android verwenden alle XML-Konfigurationsformate. Generieren oder transformieren Sie Konfigurationsdaten als JSON — einfacher zu vergleichen und versionieren — und konvertieren Sie dann für die Bereitstellung zu XML.
- Sitemap- und RSS-Feed-XML erzeugen
- Content-Management-Systeme und statische Site-Generatoren speichern Seiten-Metadaten oft als JSON. Konvertieren Sie diese Metadaten zu sitemap.xml oder RSS-Feed-XML, um sie an Suchmaschinen zu übermitteln oder Inhalte an Feed-Reader zu syndizieren.
- Enterprise-Datenintegration (EDI / ERP / CRM)
- ERP-Systeme (SAP, Oracle), CRM-Plattformen und EDI-Netzwerke tauschen häufig Daten in XML aus. Konvertieren Sie JSON-Exporte aus modernen REST-APIs zu XML, um diese Systeme ohne den Aufbau eines eigenen XML-Serialisierers zu versorgen.
- Android-Ressourcendateien
- Android-Zeichenkettenressourcen, Layout-Constraints und Manifest-Einträge sind allesamt XML. Generieren oder aktualisieren Sie Ressourcendateien programmatisch aus JSON-Datenquellen und konvertieren Sie zum erforderlichen XML-Format für das Android-Build-System.
- SVG- und Vektorgrafik-Generierung
- SVG ist XML. Erstellen Sie SVG-Strukturen als JSON-Daten — Pfade, Formen, Farben, Transformationen — und konvertieren Sie dann zu XML, um gültige SVG-Dateien für Web, Druck oder Vektorbearbeitungswerkzeuge zu erzeugen.
Technische Details
- RFC-8259-konformes JSON-Parsing
- JSON-Eingaben werden mit dem nativen JSON.parse() des Browsers geparst, der vollständig RFC-8259-konform ist. Er liefert genaue Syntaxfehlermeldungen mit Best-Effort-Positionsinformationen (Zeile und Spalte) und verarbeitet alle JSON-Datentypen: Zeichenketten, Zahlen, boolesche Werte, null, Arrays und Objekte.
- Benutzerdefinierter rekursiver JSON-zu-XML-Serialisierer
- Nach dem Parsen durchläuft ein benutzerdefinierter rekursiver Serialisierer den JSON-Baum. Objektschlüssel, die mit @_ beginnen, werden als XML-Attribute am Elternelement ausgegeben. Der #text-Schlüssel wird als Textinhalt des Elements ausgegeben. Einfache Objektschlüssel werden zu Kindelementen. Array-Werte erzeugen wiederholte gleichnamige Geschwisterelemente. Sonderzeichen (<, >, &, ", ') in Textinhalten und Attributwerten werden zu ihren XML-Entity-Referenzen maskiert.
- Wurzelnormalisierung
- Da XML genau ein Wurzelelement erfordert, wendet der Serialisierer vor dem Aufbau des Dokuments eine Wurzelnormalisierung an: Objekte mit einem Schlüssel verwenden den Schlüssel als Wurzel; Objekte mit mehreren Schlüsseln und Arrays auf oberster Ebene erhalten einen synthetischen
-Wrapper. Dies stellt sicher, dass die Ausgabe unabhängig von der Eingabeform immer wohlgeformtes XML ist. - 100 % browserbasiert — kein Upload, kein Server
- Alle Verarbeitung läuft in der JavaScript-Engine Ihres Browsers. Zu keinem Zeitpunkt werden Daten über das Netzwerk übertragen. Eingaben größer als 200 KB schalten automatisch vom Live-Modus in den manuellen Modus um (erfordert einen expliziten Klick auf „Konvertieren”), um den Browser reaktionsfähig zu halten und ein Blockieren des Hauptthreads bei intensiver Serialisierung zu verhindern.
Best Practices
- Wurzelelement mit einem Objekt mit einem einzigen Schlüssel kontrollieren
- Der sauberste Weg, sinnvolles XML zu erzeugen, ist sicherzustellen, dass Ihr oberstes JSON ein Objekt mit einem einzigen Schlüssel ist, dessen Schlüssel der gewünschte Wurzel-Elementname ist. Mehrschlüsselige Daten unter einem benannten Schlüssel einzuschließen gibt Ihnen ein semantisch bedeutungsvolles Wurzel statt des generischen
-Wrappers. - @_ und #text für attributlastiges XML verwenden
- Wenn Ihr Ziel-XML-Schema viele Attribute verwendet (häufig in Konfigurationsdateien, SVG und SOAP-Envelopes), formen Sie Ihr JSON vor der Konvertierung so um, dass es @_-präfixierte Schlüssel und #text verwendet. Das resultierende XML entspricht dann genau dem Zielschema ohne Nachbearbeitung.
- Arrays für sinnvolle Tag-Namen in benannten Objekten einschließen
- Ein Array auf oberster Ebene erzeugt das generische
-Muster, bei dem- ...
- ein fester literaler Name ist. Das Array unter einem benannten Schlüssel einzuschließen — { "products": [...] } — erzeugt wiederholte
-Elemente (der Schlüsselname wird für jedes Array-Element wiederverwendet) unter einem -Wrapper. Das gibt einen domainbedeutsamen Tag-Namen und ist für XML, das von einem Schema geparst oder validiert wird, fast immer vorzuziehen. - Ausgabe mit dem XML-Formatierer validieren
- Fügen Sie nach der Konvertierung die XML-Ausgabe in den XML-Formatierer ein, um die Wohlgeformtheit zu validieren, die Einrückung zu prüfen und strukturelle Probleme zu identifizieren, bevor das XML an einen nachgelagerten Dienst gesendet oder in die Versionskontrolle eingecheckt wird.
- JSON-Schlüssel vor der Konvertierung bereinigen
- XML-Elementnamen müssen mit einem Buchstaben oder Unterstrich beginnen und dürfen keine Leerzeichen oder die meisten Sonderzeichen enthalten. Wenn Ihre JSON-Schlüssel aus einer externen Quelle stammen (einem Datenbankspaltennamen, einem API-Feldnamen oder Benutzereingaben), prüfen Sie sie auf XML-Namens-Gültigkeit vor der Konvertierung, um fehlerhafte Ausgabe zu vermeiden.
Häufig gestellte Fragen
Werden meine JSON-Daten bei der Nutzung dieses Werkzeugs an einen Server gesendet?
Wie entscheidet das Werkzeug, was das XML-Wurzelelement ist?
Warum wird ein JSON-Objekt mit mehreren Schlüsseln in eingeschlossen?
Wie wird ein JSON-Array auf oberster Ebene zu XML konvertiert?
Wie konvertiere ich JSON-Schlüssel zu XML-Attributen?
Wofür wird der #text-Schlüssel verwendet?
Beeinflusst die Einrückung die XML-Struktur?
Wie wird ein innerhalb eines Objekts verschachteltes JSON-Array zu XML konvertiert?
Wie konvertiere ich XML zurück zu JSON?
Kann ich die XML-Ausgabe validieren oder formatieren?
Gibt es eine Dateigrößenbeschränkung für JSON-Eingaben?
Welche JSON-Typen werden unterstützt?
Verwandte Werkzeuge
Alle Werkzeuge anzeigen →Base64-Dekodierer & -Kodierer
Kodierung & Formatierung
Base64 online kostenlos dekodieren und kodieren. Echtzeitkonvertierung mit voller UTF-8- und Emoji-Unterstützung. 100 % privat — läuft in Ihrem Browser. Keine Anmeldung nötig.
CSV-zu-JSON-Konverter
Kodierung & Formatierung
CSV im Browser nach JSON konvertieren. RFC 4180, Typinferenz, Kopfzeile, Big-Int-sicher. 100 % privat, kein Upload.
JSON Diff Vergleich
Kodierung & Formatierung
Zwei JSON-Dateien direkt im Browser vergleichen. Nebeneinander-Hervorhebung, RFC 6902 JSON Patch-Ausgabe, störende Felder wie Zeitstempel und IDs ignorieren. 100 % privat, kein Upload.
JSON-Formatierer & Validator
Kodierung & Formatierung
JSON sofort im Browser formatieren, validieren und verschönern. Kostenloses Online-Tool mit Syntaxprüfung, Fehlererkennung, Minifizierung und Ein-Klick-Kopie. 100 % privat.
JSON-Schema-Validator
Kodierung & Formatierung
JSON gegen ein JSON Schema sofort im Browser validieren. Unterstützt Draft 2020-12, 2019-09 und Draft-07 mit pfadgenauen Fehlermeldungen. 100 % privat — kein Upload, kein Konto, kostenlos.
JSON-zu-CSV-Konverter
Kodierung & Formatierung
JSON im Browser nach CSV konvertieren. RFC 4180, Excel-EU, TSV, Pipe-Voreinstellungen. Verschachteln oder stringifizieren. 100 % privat, kein Upload.