Skip to content

XML zu JSON Konverter

XML einfügen und sofort JSON erhalten. Konvertiert Attribute in @_-Schlüssel, behandelt wiederholte Elemente als Arrays. 100 % im Browser, nichts wird hochgeladen, keine Anmeldung.

Kein Tracking Läuft im Browser Kostenlos
Optionen · 2 Leerzeichen · XML → JSON
Einrückung
0 Zeichen
JSON Ausgabe
0 Zeilen
Reviewed for XML 1.0 well-formedness handling, @_/#text convention correctness, and string-preservation accuracy — Go Tools Engineering Team · May 29, 2026

Was ist XML-zu-JSON-Konvertierung und wie funktioniert sie?

XML (Extensible Markup Language) und JSON (JavaScript Object Notation) sind beides strukturierte Datenformate, haben aber grundlegend unterschiedliche Modelle: XML ist ein Baum aus Elementen mit Attributen und gemischtem Inhalt (Text gemischt mit Kindelementen); JSON ist ein Baum aus Objekten, Arrays, Zeichenketten, Zahlen, booleschen Werten und null. Die Konvertierung zwischen ihnen erfordert einen Satz von Konventionen, um die Modellunterschiede zu überbrücken.

Dieses Werkzeug verwendet die am weitesten verbreitete Konvention — dieselbe, die von populären Bibliotheken wie fast-xml-parser (Node.js), xmltodict (Python) und JAXB (Java) verwendet wird:

**1. Attribute → @_-Präfix.** XML-Attribute haben kein direktes JSON-Äquivalent. Die Konvention ist, sie als Schlüssel mit dem Präfix @_ darzustellen. So wird zu { "@_id": "42", "@_role": "admin" } innerhalb des user-Objekts. Dieses Präfix ist eindeutig: Kein gültiger XML-Elementname beginnt mit @, sodass es keine Kollision mit Kindelelement-Namen gibt.

**2. Elementtextinhalt mit Attributen → #text.** Wenn ein Element sowohl Attribute als auch Textinhalt hat — 29.99 — muss der Text dasselbe JSON-Objekt teilen wie die Attribute. Die Konvention ist, ihn unter dem Schlüssel #text zu speichern, was { "@_currency": "USD", "#text": "29.99" } ergibt. Elemente mit nur Textinhalt und ohne Attribute werden zu einem einfachen Zeichenkettenwert.

**3. Wiederholte Geschwisterelemente → Arrays.** XML erlaubt mehrere Kindelemente mit demselben Namen; JSON-Objekte können keine doppelten Schlüssel haben. Die Lösung ist, gleichnamige Geschwister in einem Array zu sammeln. Ein -Kindelement wird zu einem einzelnen Objekt; zwei oder mehr -Kindelemente werden zu einem Array von Objekten. Das ist das wichtigste Verhaltensmerkmal: Die JSON-Form ändert sich je nach Anzahl der Geschwister im XML.

**4. Keine Typumwandlung — alle Werte bleiben Zeichenketten.** XML hat kein natives Typsystem für Textinhalte. Ein Wert von "123" in XML ist eine Zeichenkette. Ihn in die JSON-Zahl 123 umzuwandeln erfordert eine Annahme über die Absicht des Autors — eine Annahme, die für Postleitzahlen ("01234" → 1234), Telefonnummern, aufgefüllte Bezeichner und präzisionssensitive Dezimalzeichenketten falsch ist. Dieses Werkzeug bewahrt alle Werte als Zeichenketten. Wenden Sie Typumwandlung in Ihrem eigenen Code für die Felder an, bei denen Sie den Typ kennen.

**5. Verlustbehaftet bei Kommentaren, Verarbeitungsanweisungen und Namespaces.** XML unterstützt Funktionen, die JSON nicht hat: Kommentare (), Verarbeitungsanweisungen (), und Namespace-Semantik. Diese werden bei der Konvertierung verworfen oder näherungsweise dargestellt. Für verlustfreie XML-Arbeit — Neuformatierung, Minimierung, Validierung — nutzen Sie stattdessen den XML-Formatierer. Für die umgekehrte Konvertierung — XML aus JSON erstellen — nutzen Sie den JSON zu XML Konverter.

**Warum überhaupt XML zu JSON konvertieren?** JSON ist das native Format von JavaScript und das Standard-Austauschformat für REST-APIs. Wenn Sie XML von einem Legacy-SOAP-Dienst, einem RSS-Feed, einer Sitemap oder einem Enterprise-System erhalten, ermöglicht die Konvertierung zu JSON die Arbeit mit den Daten per standardmäßigem JavaScript-Objektzugriff, JSON-Path-Abfragen und jedem JSON-fähigen Datenbankdienst oder einer API. Die Konvertierung ist eine Einweg-Brücke: nützlich zum Konsumieren von XML-Daten in einem modernen Stack, aber nicht zum Erhalten oder Round-Trippen von XML-Dokumenten.

// Convert XML to JSON in Node.js using fast-xml-parser
import { XMLParser } from 'fast-xml-parser';

const xml = `<catalog>
  <product id="P01">
    <name>Wireless Headphones</name>
    <price currency="USD">79.99</price>
  </product>
</catalog>`;

const parser = new XMLParser({
  ignoreAttributes: false,      // preserve attributes
  attributeNamePrefix: '@_',    // @_ prefix for attributes
  textNodeName: '#text',        // #text for mixed element content
  parseAttributeValue: false,   // no type coercion on attributes
  parseTagValue: false,         // no type coercion on element text
});

const result = parser.parse(xml);
console.log(JSON.stringify(result, null, 2));
// {
//   "catalog": {
//     "product": {
//       "@_id": "P01",
//       "name": "Wireless Headphones",
//       "price": {
//         "@_currency": "USD",
//         "#text": "79.99"
//       }
//     }
//   }
// }

Hauptfunktionen

Live-Konvertierung

Die JSON-Ausgabe wird sofort aktualisiert, während Sie XML 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.

@_-Attributpräfix-Konvention

XML-Attribute werden zu @_-präfixierten JSON-Schlüsseln gemäß der fast-xml-parser- und xmltodict-Konvention. wird zu { "@_attr": "val" } — eindeutig und kollisionsfrei mit jedem gültigen Elementnamen.

Automatische Array-Erkennung für wiederholte Elemente

Gleichnamige Geschwisterelemente werden automatisch zu einem JSON-Array. Ein → Objekt; zwei oder mehr -Elemente → Array. Keine Konfiguration erforderlich — das Werkzeug erkennt Wiederholungen automatisch.

Keine Typumwandlung — Werte bleiben Zeichenketten

Alle XML-Werte werden als JSON-Zeichenketten erhalten. Führende Nullen, Telefonnummern, aufgefüllte Codes und boolean-ähnliche Zeichenketten wie "true" oder "false" werden niemals stillschweigend in Zahlen oder boolesche Werte umgewandelt.

100 % browserbasierte Privatsphäre

Die gesamte Konvertierung läuft lokal in Ihrem Browser mit JavaScript. Ihr XML — einschließlich Zugangsdaten, interner Konfigurationen und sensibler Payloads — wird niemals an einen Server gesendet, niemals protokolliert und niemals gespeichert.

Wohlgeformtheits-Fehlerberichterstattung

Ist Ihr XML nicht wohlgeformt, meldet das Werkzeug die genaue Zeilen- und Spaltennummer des ersten Fehlers, damit Sie das Problem sofort lokalisieren und beheben können, bevor Sie konvertieren.

Beispiele

Konfigurationsdatei

<?xml version="1.0" encoding="UTF-8"?>
<appConfig version="2.1" env="production">
  <database>
    <host>db.example.com</host>
    <port>5432</port>
    <name>myapp_prod</name>
    <pool max="10" min="2"/>
  </database>
  <cache enabled="true">
    <ttl>3600</ttl>
    <driver>redis</driver>
  </cache>
</appConfig>

Eine kleine Anwendungskonfiguration mit Attributen und verschachtelten Elementen. Attribute werden zu @_-präfixierten Schlüsseln in der JSON-Ausgabe: version="2.1" wird zu "@_version": "2.1" unter appConfig, und die Attribute max und min des pool-Elements werden zu "@_max": "10" und "@_min": "2". Alle Werte — einschließlich port und ttl — bleiben Zeichenketten, keine Zahlen, da der Konverter keine Typumwandlung vornimmt.

Sitemap-Fragment

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://go-tools.org/tools/xml-to-json</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://go-tools.org/tools/json-to-xml</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>

Ein sitemap.xml-Fragment mit zwei URLs. Da unter zwei -Geschwisterelemente vorhanden sind, werden sie zu einem JSON-Array. Die xmlns-Namespace-Deklaration wird zu "@_xmlns" im urlset-Objekt. Der priority-Wert "0.8" bleibt eine Zeichenkette — keine numerische Umwandlung —, sodass führende Nullen wie "0.08" ebenfalls exakt erhalten blieben.

RSS-Item

<item>
  <title>XML to JSON: A Practical Guide</title>
  <link>https://go-tools.org/blog/xml-to-json-guide</link>
  <pubDate>Thu, 29 May 2026 00:00:00 GMT</pubDate>
  <category>Developer Tools</category>
  <description>Learn how XML attributes map to @_ keys, how repeated elements become arrays, and why values stay strings in any XML-to-JSON conversion.</description>
  <guid isPermaLink="true">https://go-tools.org/blog/xml-to-json-guide</guid>
</item>

Ein RSS-2.0-Item-Element. Das guid-Element hat ein isPermaLink-Attribut, daher wird die JSON-Ausgabe für guid zu einem Objekt mit "@_isPermaLink": "true" und "#text": "https://go-tools.org/blog/xml-to-json-guide" — Attribut und Textinhalt des Elements koexistieren als Geschwisterschlüssel. Alle anderen Elemente haben nur Textinhalt und werden direkt zu Zeichenkettenwerten konvertiert.

Anleitung

  1. 1

    XML einfügen

    Geben Sie Ihr XML in das Eingabefeld oben ein oder fügen Sie es ein. Sie können auch auf „Beispiel laden” klicken, um ein Beispiel auszuprobieren — eine Konfigurationsdatei, ein Sitemap-Fragment oder ein RSS-Item.

  2. 2

    Live-JSON-Ausgabe ansehen

    JSON erscheint sofort im Ausgabebereich. Attribute werden zu @_-präfixierten Schlüsseln, Textinhalte gemischter Elemente werden zu #text, und wiederholte Geschwisterelemente werden zu Arrays. Passen Sie die Einrückung (2 oder 4 Leerzeichen) nach Bedarf an.

  3. 3

    Kopieren oder Herunterladen

    Klicken Sie auf „Kopieren”, um das JSON in die Zwischenablage zu übernehmen, oder auf „Herunterladen”, um es als .json-Datei für Ihre Anwendung, API oder Datenpipeline zu speichern.

Häufige Konvertierungsfehler

Vergessen, dass Werte Zeichenketten bleiben

Der Konverter nimmt keine Typumwandlung vor. Wenn Ihr nachgelagerter Code JSON-Zahlen erwartet, das XML aber numerische Zeichenketten enthält, müssen Sie diese nach der Konvertierung explizit umwandeln. Sich auf implizite Zeichenketten-zu-Zahlen-Umwandlung (JavaScripts == oder arithmetische Operatoren) zu verlassen ist fehleranfällig — verwenden Sie immer gezielt parseInt(), parseFloat() oder Number().

✗ Falsch
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }  ← string, not number
// Dangerous: comparing as-is
if (config.timeout > 25) { ... }  // "30" > 25 coerces, but fragile
✓ Richtig
// XML: <timeout>30</timeout>
// JSON output: { "timeout": "30" }
// Safe: explicit coercion where you know the type
if (parseInt(config.timeout, 10) > 25) { ... }

Einzelelement- vs. Array-Formunterschiede

Wenn nur ein -Element vorhanden ist, ist die Ausgabe ein Objekt; bei zwei oder mehr wird es zu einem Array. Consumer-Code, der immer result.items.forEach() aufruft, wird abstürzen, wenn items ein einzelnes Objekt ist. Normalisieren Sie nach der Konvertierung immer zu einem Array, wenn Ihr Schema ein-oder-viele erlaubt.

✗ Falsch
// XML with one item: <root><item>a</item></root>
// JSON: { "root": { "item": "a" } }  ← string, not array
result.root.item.forEach(i => console.log(i));  // TypeError: not a function
✓ Richtig
// Normalize to array regardless of count
const items = [].concat(result.root?.item ?? []);
items.forEach(i => console.log(i));  // safe for 0, 1, or many

Gemischter Inhalt: Text und #text-Schlüssel

Wenn ein Element sowohl Attribute als auch Textinhalt hat, landet der Text unter #text. Auf den Textwert wie auf eine einfache Zeichenkette zuzugreifen liefert stattdessen ein Objekt. Prüfen Sie immer, ob ein Elementwert eine Zeichenkette oder ein Objekt mit einem #text-Schlüssel ist, wenn Attribute möglich sind.

✗ Falsch
// XML: <price currency="USD">29.99</price>
// JSON: { "price": { "@_currency": "USD", "#text": "29.99" } }
const amount = result.price;  // { "@_currency": "USD", "#text": "29.99" }, not "29.99"
✓ Richtig
// Handle both plain string and @_/#text object
const raw = result.price;
const amount = typeof raw === 'object' ? raw['#text'] : raw;  // "29.99"

Nicht wohlgeformte XML-Eingabe

Der Konverter erfordert wohlgeformtes XML. Häufige Ursachen für Wohlgeformtheitsfehler: nicht maskiertes & im Textinhalt (verwenden Sie &), nicht übereinstimmende Tags ( vs. — XML unterscheidet Groß-/Kleinschreibung), mehrere Wurzelelemente oder nicht geschlossene Tags. Die Fehlermeldung zeigt Zeile und Spalte des ersten Problems.

✗ Falsch
<!-- Unescaped & — well-formedness error -->
<query>name = 'Alice' & role = 'admin'</query>
✓ Richtig
<!-- Escaped & — valid XML -->
<query>name = 'Alice' &amp; role = 'admin'</query>

Führende Nullen durch Typumwandlung verloren

Dieses Werkzeug bewahrt führende Nullen, da es keine Typumwandlung vornimmt. Wenn Sie das JSON mit einer Bibliothek nachverarbeiten, die Umwandlungen vornimmt (manche JSON-Schema-Validatoren, ORM-Mapper), kann die führende Null verloren gehen. Deklarieren Sie den Feldtyp in Ihrem Schema immer explizit als Zeichenkette.

✗ Falsch
// XML: <zipCode>01234</zipCode>
// This tool outputs: { "zipCode": "01234" }  ← correct
// But if a downstream schema coerces:
// { zipCode: z.number() }  → 1234  ← leading zero lost
✓ Richtig
// Declare ZIP codes and other padded identifiers as strings
// { zipCode: z.string() }  → "01234"  ← correct

Häufige Anwendungsfälle

SOAP- / Legacy-XML-APIs konsumieren
Legacy-Enterprise-Dienste (Banking, Versicherung, Logistik) bieten häufig SOAP-APIs an, die XML zurückgeben. Konvertieren Sie die Antwort zu JSON, um mit den Daten mithilfe moderner JavaScript-Werkzeuge zu arbeiten, sie in einer Dokumentendatenbank zu speichern oder an einen REST-API-Consumer weiterzuleiten.
RSS- und Atom-Feeds verarbeiten
RSS-2.0- und Atom-1.0-Feeds sind XML. Konvertieren Sie Feed-XML zu JSON, um Titel, Links, Veröffentlichungsdaten und Beschreibungen für Feed-Aggregatoren, Inhaltspipelines und Benachrichtigungssysteme zu extrahieren — ohne eine XML-Parsing-Bibliothek als Abhängigkeit.
Sitemap-Dateien parsen
sitemap.xml-Dateien listen die URLs einer Website mit Metadaten auf. Konvertieren Sie eine Sitemap zu JSON, um URL-Abdeckung zu analysieren, Crawl-Warteschlangen aufzubauen, Sitemaps über Umgebungen hinweg zu vergleichen oder URLs in einen Link-Checker oder SEO-Audit-Werkzeug einzuspeisen.
Konfigurationsdateien transformieren
Viele Enterprise-Systeme (Spring, Maven, Ant, JBoss, Tomcat) verwenden XML-Konfigurationsdateien. Konvertieren Sie sie zu JSON für Analysen, Migrationsskripte, Dokumentationserstellung oder den Import in Werkzeuge, die JSON nativ unterstützen.
Mobile- und Android-Entwicklung
Android-Ressourcen, Layout-Dateien und AndroidManifest.xml sind allesamt XML. Konvertieren Sie sie zu JSON für Analyseskripte, automatisiertes Auditing oder das Erstellen von Dokumentationen über deklarierte Berechtigungen, Activities und Ressourcenwerte.
Datenmigration und ETL
Datenexporte aus Enterprise-Systemen (ERP, CRM, Gehaltsabrechnung) kommen häufig als XML. Konvertieren Sie zu JSON als ersten Schritt in einer ETL-Pipeline, um die Daten in einen JSON-nativen Datenspeicher wie MongoDB, Firestore oder eine REST-API zu laden.

Technische Details

Browser-DOMParser für das XML-Parsing
XML-Eingaben werden mit dem nativen DOMParser des Browsers und dem MIME-Typ 'text/xml' geparst — dieselbe Engine, die SVG und XHTML rendert. Sie ist vollständig XML-1.0-konform und meldet Wohlgeformtheitsfehler mit Zeilen- und Spalteninformationen. Dieser Ansatz verarbeitet Namespaces, CDATA-Abschnitte, Verarbeitungsanweisungen und Entity-Referenzen korrekt ohne Drittanbieter-Abhängigkeiten.
Rekursive DOM-zu-JSON-Serialisierung
Nach dem Parsen durchläuft das Werkzeug den DOM-Baum rekursiv. Elementknoten werden zu JSON-Objekten; ihre Attribute werden zu @_-präfixierten Schlüsseln; reine Textelemente werden zu einfachen Zeichenkettenwerten; Elemente mit sowohl Attributen als auch Textinhalt erhalten einen #text-Schlüssel für den Textinhalt. Gleichnamige Geschwisterelemente werden gesammelt und als JSON-Array ausgegeben. Reine Leerzeichen-Textknoten zwischen Elementen werden verworfen.
Keine Typumwandlung — Zeichenkettenerhaltung
Alle Attributwerte und Textinhalte werden als Zeichenketten in die JSON-Ausgabe geschrieben. Keine parseInt-, parseFloat- oder boolesche Verarbeitung wird angewendet. Das ist eine bewusste Designentscheidung, um stille Datenverfälschung bei Werten mit führenden Nullen, präzisionssensitiven Dezimalzahlen und boolean-ähnlichen Zeichenketten zu verhindern. Typumwandlung sollte, wo nötig, explizit im nachgelagerten Code angewendet werden.
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 intensivem DOM-Durchlauf zu verhindern.

Best Practices

XML-Wohlgeformtheit zuerst validieren
Wenn Ihre XML-Quelle handgeschrieben oder von einem System generiert ist, das gelegentlich fehlerhafte Ausgabe erzeugt, validieren Sie sie vor der Konvertierung. Nutzen Sie die Schaltfläche „Validieren” im XML-Formatierer, um zu bestätigen, dass das XML wohlgeformt ist, und erhalten Sie genaue Fehlerpositionen für etwaige Probleme.
Ein-oder-viele-Felder zu Arrays normalisieren
Wenn Ihr XML-Schema entweder ein oder viele Kindelemente mit demselben Namen erlaubt, ist die JSON-Ausgabe ein Objekt für ein Element und ein Array für viele. Normalisieren Sie diese Felder immer in Ihrem Consumer-Code: const items = [].concat(result.items ?? []) — das ist sicher für null, eines oder viele und verhindert TypeErrors.
Typumwandlung explizit und selektiv anwenden
Da dieses Werkzeug alle Werte als Zeichenketten bewahrt, wenden Sie Typumwandlung gezielt in Ihrem Code für die spezifischen Felder an, die sie benötigen. parseInt(val, 10) für ein bekanntes Ganzzahlfeld zu verwenden ist sicher. Die Anwendung von Number(val) auf breiter Basis riskiert die Verfälschung von Werten mit führenden Nullen, leeren Zeichenketten und präzisionssensitiven Dezimalzahlen.
Auf #text beim Zugriff auf Elementwerte prüfen
Wenn ein Element in manchen Payloads Attribute haben kann und in anderen nicht, ist sein JSON-Wert entweder eine einfache Zeichenkette (keine Attribute) oder ein Objekt mit @_-Schlüsseln und einem #text-Schlüssel (mit Attributen). Schreiben Sie robuste Zugriffsmethoden: const val = typeof node === 'object' ? node['#text'] : node. Dieses Muster behandelt beide Formen und vermeidet stille undefined-Werte.
Für verlustfreie XML-Arbeit den XML-Formatierer verwenden
Die XML-zu-JSON-Konvertierung verwirft Kommentare, Verarbeitungsanweisungen und Namespace-Semantik. Wenn Sie alle XML-Inhalte exakt erhalten müssen, nutzen Sie den XML-Formatierer zum Verschönern, Minimieren und Validieren ohne Verluste. Konvertieren Sie nur dann zu JSON, wenn Sie mit den Daten in einem JSON-nativen Kontext arbeiten müssen.

Häufig gestellte Fragen

Werden meine XML-Daten bei der Nutzung dieses Werkzeugs an einen Server gesendet?
Nein. Die gesamte Konvertierung findet vollständig in Ihrem Browser mithilfe von JavaScript statt. Ihr XML wird niemals über das Netzwerk übertragen, niemals auf einem Server gespeichert und niemals protokolliert oder analysiert. Das macht das Werkzeug sicher für XML-Payloads mit API-Zugangsdaten, internen Service-Konfigurationen, SOAP-WS-Security-Token, Healthcare-HL7/FHIR-Daten oder anderen sensiblen Inhalten. Sie können dies überprüfen, indem Sie den Netzwerk-Tab Ihres Browsers öffnen — beim Einfügen oder Konvertieren von XML werden keinerlei Anfragen ausgelöst.
Wie werden XML-Attribute in der JSON-Ausgabe dargestellt?
XML-Attribute werden zu JSON-Schlüsseln mit dem Präfix @_. Zum Beispiel erzeugt ein JSON-Objekt, das "@_id": "P01" und "@_category": "electronics" neben etwaigen Kindelelement-Schlüsseln enthält. Wenn ein Element sowohl Attribute als auch Textinhalt hat — beispielsweise 29.99 — wird der Textinhalt unter dem speziellen Schlüssel "#text" gespeichert, sodass das Ergebnis { "@_currency": "USD", "#text": "29.99" } lautet. Diese Konvention ist konsistent und vorhersagbar: @_ bedeutet immer Attribut, #text bedeutet immer Elementtextinhalt.
Wandelt der Konverter Zahlen oder boolesche Werte um?
Nein. Alle XML-Textinhalte und Attributwerte werden zu JSON-Zeichenketten, unabhängig davon, wie sie aussehen. 42 wird zu "count": "42", nicht 42. true wird zu "enabled": "true", nicht true. Das ist bewusst und wichtig: Es bewahrt führende Nullen (Telefonnummern, Kontocodes, Postleitzahlen wie "01234"), numerische Präzision für Werte wie "0.100" und Zeichenkettenwerte, die wie boolesche Werte aussehen. Wenn Sie in Ihrem nachgelagerten JSON Zahlen oder boolesche Werte benötigen, wenden Sie die Typumwandlung in Ihrem eigenen Code nach der Konvertierung an — dort kontrollieren Sie genau, welche Felder umgewandelt werden.
Wie werden wiederholte (gleichnamige Geschwister-)Elemente behandelt?
Ein einzelnes Kindelement wird zu einem JSON-Objekt. Zwei oder mehr Kindelemente mit demselben Tag-Namen unter demselben Elternelement werden zu einem JSON-Array. Zum Beispiel erzeugt a { "root": { "item": "a" } } — item ist ein Objekt (Zeichenkette). Aber ab erzeugt { "root": { "item": ["a", "b"] } } — item ist ein Array. Das bedeutet, die Struktur Ihrer JSON-Ausgabe hängt von der Anzahl der Geschwisterelemente im XML ab, was einer der Gründe ist, warum die XML-zu-JSON-Konvertierung konventionsbasiert ist. Wenn Ihr XML-Schema entweder ein oder viele Items haben kann, muss Ihr Consumer-Code beide Fälle — Objekt und Array — behandeln.
Ist die XML-zu-JSON-Konvertierung verlustfrei?
Nein. XML hat Funktionen, für die es kein JSON-Äquivalent gibt und die bei der Konvertierung wegfallen: XML-Kommentare () werden verworfen, Verarbeitungsanweisungen () werden verworfen, Namespace-Präfix-Bindungen werden teilweise als @_-Attribute erhalten, aber ihre Semantik nicht, und die relative Reihenfolge von Knoten mit gemischtem Inhalt (Text gemischt mit Kindelementen) wird möglicherweise nicht vollständig erhalten. Für rein strukturelles XML ohne Kommentare oder Verarbeitungsanweisungen bewahrt die Konvertierung alle Elementnamen, Attributnamen, Attributwerte und Textinhalte. Für verlustfreie XML-Arbeit — Formatierung, Validierung oder Inspektion ohne Datenverlust — nutzen Sie stattdessen den XML-Formatierer.
Wie konvertiere ich JSON zurück zu XML?
Verwenden Sie unseren Begleit-JSON zu XML Konverter. Er wendet dieselben Konventionen in umgekehrter Richtung an: @_-präfixierte Schlüssel werden zu XML-Attributen, #text-Schlüssel werden zum Elementtextinhalt, und JSON-Arrays werden zu wiederholten gleichnamigen Geschwisterelementen. Damit sind die beiden Werkzeuge für Round-Trip-Anwendungsfälle symmetrisch.
Was passiert mit XML-Namespaces?
Namespace-Deklarationen (xmlns="..." und xmlns:prefix="...") werden als reguläre Attribute behandelt und erscheinen in der JSON-Ausgabe als @_xmlns- und @_xmlns:prefix-Schlüssel. Das Namespace-Präfix in Elementnamen bleibt als Teil des Elementname-Schlüssels erhalten (z. B. wird zu "soap:Body" in JSON). Die semantische Bedeutung von Namespaces — dass zwei Präfixe auf dieselbe URI zeigen könnten — wird nicht interpretiert. Wenn präzise Namespace-Behandlung für Ihren Anwendungsfall wichtig ist, parsen Sie das XML mit einem namespace-fähigen Parser statt es nach JSON zu konvertieren.
Warum wird 0123 zu "0123" und nicht zu 123?
Weil der Konverter keine Typumwandlung vornimmt. Die Zeichenkette "0123" und die Zahl 123 sind unterschiedliche Werte: "0123" hat eine führende Null, die in vielen Kontexten bedeutsam ist (Kontocodes, Postleitzahlen, nationale Identifikationsnummern, aufgefüllte Bezeichner). Diese führende Null stillschweigend wegzulassen würde Daten verfälschen. Der sichere Standard ist, alle Werte exakt als Zeichenketten zu erhalten, wie sie im XML erscheinen. Wenden Sie numerisches Parsen selektiv in Ihrem eigenen Code für die spezifischen Felder an, bei denen Sie wissen, dass der Wert immer eine einfache Ganzzahl ist.
Was ist der Unterschied zwischen diesem Werkzeug und einem XML-Formatierer?
Der XML-Formatierer formatiert XML neu — er ändert Einrückung und Leerzeichen, aber die Ausgabe bleibt XML. Dieser XML-zu-JSON-Konverter ändert das Format vollständig: Die Ausgabe ist ein JSON-Dokument, das die XML-Struktur mithilfe der @_-Attributkonvention darstellt. Verwenden Sie den Formatierer, wenn Sie XML lesen, bearbeiten, validieren oder minimieren möchten. Verwenden Sie diesen Konverter, wenn Sie die XML-Daten in einer JavaScript-Anwendung verarbeiten, in eine REST-API einspeisen oder in einem JSON-Dokumentenspeicher ablegen müssen.
Gibt es eine Dateigrößenbeschränkung?
Es gibt keine feste Größenbeschränkung, aber Eingaben größer als 200 KB schalten automatisch vom Live-Modus in den manuellen Modus um. Im manuellen Modus erscheint eine Schaltfläche „Konvertieren” und die Konvertierung läuft nur, wenn Sie darauf klicken — das hält den Browser reaktionsfähig, während große XML-Dokumente geparst werden. Für sehr große XML-Dateien (mehrere Megabyte Datenexporte) sollten Sie Befehlszeilenwerkzeuge für bessere Leistung in Betracht ziehen: python3 -c "import sys, xmltodict, json; print(json.dumps(xmltodict.parse(sys.stdin.read()), indent=2))" oder node -e mit einer dedizierten XML-zu-JSON-Bibliothek.
Verarbeitet der Konverter CDATA-Abschnitte?
Ja. CDATA-Abschnittsinhalte () werden als Elementtextinhalt behandelt und erscheinen als einfacher Zeichenkettenwert in der JSON-Ausgabe. Die CDATA-Begrenzer selbst werden entfernt — nur der Inhalt darin wird beibehalten. Zum Beispiel erzeugt "note": "if (a < b) return;" in JSON. Das ist das korrekte Verhalten: CDATA ist nur eine Möglichkeit, Text mit Sonderzeichen einzubetten, ohne sie maskieren zu müssen; die semantische Bedeutung ist der Textinhalt.
Kann ich XML mit mehreren Wurzelelementen konvertieren?
Nein. XML mit mehreren Wurzelelementen ist nicht wohlgeformt, und dieses Werkzeug erfordert wohlgeformte XML-Eingabe. Wenn Ihr XML-Parser Ihnen mehrere Wurzelelemente liefert (häufig beim Zusammensetzen von XML-Fragmenten), schließen Sie diese in ein einzelnes Wurzelelement ein, bevor Sie konvertieren. Wenn Sie beispielsweise haben, konvertieren Sie es als . Die Fehlermeldung gibt die Position des Wohlgeformtheitsproblems an, damit Sie es schnell beheben können.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →