Die Integration, die mir beigebracht hat, die XML-zu-JSON-Konvertierung zu respektieren, war die API eines Versandunternehmens. Moderne Reste überall im Stapel, und dann dieser eine Legacy-Endpunkt, der SOAP sprach und XML-Umschläge zurückgab, die ich in eine JSON-Pipeline falten musste. "Es ist nur XML zu JSON", dachte ich und griff nach einem Einzeilenkonverter. Dann kamen die Randfälle an: a <Package> Element, das manchmal ein einzelnes Objekt und manchmal eine Liste war, je nachdem, wie viele Pakete in der Reihenfolge waren. ein id Attribut, das mein naiver Konverter vollständig gelöscht hat, weil er nur Elementtext betrachtete. ein <Description> in CData eingewickelt, weil es ein kaufmännisches und enthaltenes und ein kaufmänn Jeder dieser Daten hat die Daten stillschweigend beschädigt - der JSON sah plausibel aus und war in einer Weise falsch, die nur drei Dienste im Downstream-Modus auftauchte.
XML und JSON sehen aus, als sollten sie sich trivial ineinander überführen, und das nicht, weil sie Daten mit unterschiedlichen Primitiven modellieren. JSON hat Objekte, Arrays, Strings, Zahlen, Boolesche und null – ein kleines, sauberes Set. XML hat Elemente, Attribute, Textknoten, gemischte Inhalte, Namespaces, CD-Daten, Kommentare und Verarbeitungsbefehle und entscheidend Keine Arrays und Keine Typendrohen Ein Konverter muss also Entscheidungen treffen, dass ein verlustfreies Format nicht: Wohin gehen Attribute, wenn JSON kein Konzept hat? Wie kann man ein einzelnes Element aus einer Liste mit einem Element erzählen, wenn XML beide auf die gleiche Weise kennzeichnet? Was passiert mit einem Element, das sowohl Attribute als auch Text enthält?
ein XML-zu-JSON-Konverter Das macht diese Entscheidungen absichtlich und konsequent aus dem Unterschied zwischen einer sauberen Integration und einer Woche des Debuggens nachgeschaltet. Die für Toolz.dev erstellte Attribute werden den vorangestellten Schlüsseln erstellt, damit nichts verloren geht, wiederholte Tags in JSON-Arrays zusammenbricht, damit die Struktur beibehalten wird, Text mit gemischtem Inhalt unter einem dedizierten Schlüssel bleibt und CData wörtlich liest. Und das alles mit einem abhängigkeitsfreien Parser, der in Ihrem Browser ausgeführt wird, was wichtig ist, da Integrations-Nutzdaten genau die Art von Daten sind, die Sie nicht auf den Server eines Fremden hochladen sollten.
Diese Anleitung behandelt die Verarbeitung von XML-strukturellen Macken, wenn wiederholte Elemente zu Arrays werden, wie man mit Attributen und Namespaces umgeht und die SOAP- und RSS-Workflows, bei denen diese Konvertierung ständig stattfindet.
tl; dr: Fügen Sie XML in die toolz.dev XML zu JSON-Konverter, wähle Einzug aus und hole saubere JSON, wo Attribute werden
@-Präfixierte Schlüssel, wiederholte Tags werden zu Arrays, Text mit gemischtem Inhalt wird darunter#textund CData wird wörtlich gelesen. Optionale Parsing-Drehungen vom Typ"44.95"in eine reale Zahl. Es verwendet einen abhängigkeitsfreien Parser, läuft 100% clientseitig, sodass SOAP- und Integrationsnutzlasten niemals hochgeladen werden und sich mit ihnen koppeln json zu Yaml und das JSON-Formater für den nächsten Schritt in Ihrer Pipeline.
Warum ist XML zu JSON eine einfache Eins-zu-Eins-Mapping?
Die Intuition, dass XML und JSON austauschbar sind, stammt aus ihrem gemeinsamen Job - der strukturierten Daten - und den Unterbrechungen ihrer verschiedenen Bausteine. Die Nichtübereinstimmung zeigt sich an vier bestimmten Stellen, und bei der Qualität eines Konverters geht es ausschließlich darum, wie er damit umgeht.
Attribute haben kein JSON-Äquivalent. <book id="bk101">War and Peace</book> hat ein Attribut (id) und Textinhalt (War and Peace).). JSON hat keine Vorstellung von einem Attribut, alles ist ein Schlüssel-Wert-Paar. Ein Konverter muss eine Konvention erfinden, und die weit verbreitete ist die Präfixattributschlüssel - { "book": { "@id": "bk101", "#text": "War and Peace" } }drohen Lassen Sie die Attribute wie naive Konverter fallen, und Sie haben stillschweigend Daten verloren.
JSON hat Arrays; XML tut es nicht. In XML wird nur das gleiche Tag wiederholt: drei <item> Elemente unter einem Elternteil. Aber eine einzige <item> Sieht strukturell identisch mit einer Liste von eins aus. JSON muss wissen, ob ein Objekt oder ein Array ausgegeben werden soll, und das einzige verfügbare Signal ist das Auftreten. Wiederholte Tags werden also zu Arrays und einzelne Tags bleiben Objekte.
gemischter Inhalt. Ein Element kann sowohl untergeordnete Elemente als auch losen Text aufnehmen. JSON-Objekte können natürlich "Dieses Objekt hat auch einen nackten Zeichenfolgewert.“ Der Text geht also unter einen reservierten Schlüssel wie #textdrohen
Typen existieren nicht in XML. Jeder Wert in XML ist Text. <price>44.95</price> ist die Zeichenfolge "44.95", keine Zahl, es sei denn, ein Konverter entscheidet sich dafür, sie zu zwingen - und diese Wahl kann falsch sein, weil <zip>08544</zip> Muss eine Schnur bleiben oder ihre führende Null verlieren.
der Konverter Behandelt diese explizit, anstatt so zu tun, als ob sie nicht existieren. Deshalb bleibt die Ausgabe der Quelle treu, anstatt die Teile von XML, für die JSON keinen Slot hat, still zu löschen.
Wann werden wiederholte Elemente zu Arrays?
Dies ist der verwirrendste Teil der XML-zu-JSON-Konvertierung, und es lohnt sich, sie zu verstehen, anstatt von überrascht zu werden. Die Regel das Konverter Uses ist auftrittsbasiert: Wenn ein Tag-Name mehr als einmal vorkommt, kollabieren seine Werte in ein JSON-Array, wenn er genau einmal erscheint, bleibt es ein einzelnes Objekt oder Wert.
Also ein <catalog> mit zwei <book> Kinder produzieren { "catalog": { "book": [ {...}, {...} ] } } - Ein Array. Aber ein <catalog> mit einem <book> Erzeugt { "catalog": { "book": {...} } } - Ein einfaches Objekt, kein Array.
Die Konsequenz zu planen für: Eine Liste eines Elements sieht nicht wie eine Liste aus. Wenn Ihr Downstream-Code erwartet catalog.book Um immer ein Array zu sein und darüber zu iterieren, wird eine Einzelbuchantwort es brechen, weil book wird ein Objekt zu dieser bestimmten Zeit sein. Dies ist kein Fehler bei der Konvertierung - es ist eine unvermeidliche Folge von XML-Kennzeichnungslisten - aber es ist eine echte Herausforderung bei Integrationen, bei denen die Anzahl der Artikel variiert. Meine Versand-Träger-Katastrophe war genau dies: Bestellungen mit einem Paket gaben ein Objekt zurück, bei dem Mehrfachpaketaufträge ein Array zurückgaben und mein Code Array angenommen hat.
Das Verteidigungsmuster in Ihrem Konsumcode besteht darin, sich zu normalisieren: Wenn ein Feld entweder sein könnte, müssen Sie es vor dem Iterieren zu einem Array erzwingen ([].concat(catalog.book)).). Wissen wieso Die Form variiert, was Sie diesen Wachmann schreiben können, anstatt sich von ihm verbrennen zu lassen.
Wie werden Attribute und Namespaces behandelt?
Attribute konvertieren in Objektschlüssel mit einem @ Präfix. <user role="admin" active="true"> wird { "user": { "@role": "admin", "@active": "true" } }drohen Das Präfix hält Attribute visuell von untergeordneten Elementen ab und verhindert eine Kollision, bei der ein Attribut und ein untergeordnetes Element einen Namen teilen. Wenn Sie überhaupt keine Attribute benötigen, möchten Sie nur die Elementdaten - die Konverter Hat eine Option "Attribute ignorieren", die sie vollständig für ein saubereres Ergebnis ablegt.
Namensräume werden als Teil des Tag-Namens durchlaufen. <soap:Body> wird ein Schlüssel, der buchstäblich benannt "soap:Body", und xmlns:soap="..." ist ein Attribut wie jedes andere, landet unter @xmlns:soapdrohen Dies ist die pragmatische Wahl: Das vollständige Auflösen von Namespaces in ihre URIs würde unhandliche Schlüssel erzeugen und entspricht selten dem, was der Integrationscode tatsächlich möchte, der angesprochen wird soap:Body durch seinen bekannten vorangestellten Namen. Wenn Sie SOAP oder SVG oder einen namensfreien Vokabular verarbeiten, sind die von Ihnen aus dem XML bekannten Präfixe die Schlüssel, die Sie im JSON erhalten.
CDAT-Abschnitte — Die <![CDATA[ ... ]]> Blöcke, die XML-Rauentext mit Sonderzeichen tragen lassen – werden wörtlich gelesen, ohne Entitätsdekodierung, was genau ihr Zweck ist. ein <script> oder <description> In CData umhüllt, um seine kaufmännischen und eckigen Klammern zu schützen, werden diese Zeichen intakt. Außerhalb von CData, Standard-Einheiten (<, &und Freunde) und numerische Referenzen (é, é) zu ihren tatsächlichen Charakteren dekodiert werden.
Wie konvertiert man XML mit dem Tool in JSON?
Schritt 1: Fügen Sie Ihre XML ein
Alle wohlgeformten XML-Arbeiten – mit oder ohne <?xml ?> Erklärung mit oder ohne Namensräume. Die Anweisungen zur Deklaration, zum DocType, zu Kommentaren und zur Verarbeitung werden erkannt und übersprungen, sodass Sie ein vollständiges Dokument direkt aus einer API-Antwort oder einer Datei einfügen können. Die Schaltfläche Beispiel laden gibt Ihnen einen Katalog mit Attributen, verschachtelten Elementen und einem wiederholten Tag, sodass Sie jedes Konvertierungsverhalten auf einmal sehen können.
Schritt 2: Wählen Sie Ihre Optionen
Wählen Sie 2- oder 4-Space-Einrückung für den JSON. Entscheiden Sie, ob Attribute eingeschlossen oder gelöscht werden sollen. Und wählen Sie, ob Typen analysiert werden sollen: Lassen Sie es aus und jeder Wert bleibt eine Zeichenfolge (sicher, verlustfrei), schalten Sie es ein und eindeutige Zahlen und Boolesche Zahlen und Boolesche Zahlen und Boolesche Zahlen. Aus ist die richtige Standardeinstellung, wenn Werte wie Postleitzahlen oder IDs möglicherweise führende Nullen haben, die Sie beibehalten müssen.
Schritt 3: Konvertieren und überprüfen
Der Konverter analysiert zuerst und meldet ein fehlerhaftes Markup - ein nicht übereinstimmendes schließendes Tag, ein nicht geschlossenes Element, ein nicht abgeschlossener CD-Datenblock - mit einer bestimmten Nachricht, anstatt Müll-JSON zu erzeugen. Bei Erfolg wird der JSON mit Zeilen- und Byte-Zählungen angezeigt. Überfliegen Sie es, um zu bestätigen, dass die Entscheidungen für Array-Vs-Objekt Ihren Erwartungen entsprechen.
Schritt 4: Kopieren oder herunterladen
Kopieren Sie die JSON in Ihre Zwischenablage, um sie in Code einzufügen, oder laden Sie sie als .json Akte Von hier aus wird es in einen Anfragetext, einen Datenspeicher oder die nächste Phase Ihrer Pipeline abgelegt. Wenn der nächste Schritt ein Konfigurationsformat ist, JSON-zu-YAML-Konverter nimmt es weiter.
Welche Workflows gibt es bei dieser Konvertierung?
Integration von Alt-Seifen-APIs
SOAP ist immer noch überall in den Bereichen Unternehmens-, Bank-, Logistik- und Regierungssysteme und spricht ausschließlich XML. Wenn ein moderner JavaScript- oder Knotendienst eine SOAP-Antwort verbrauchen muss, ist die Konvertierung des XML-Hüllumschlags in JSON Schritt eins. Die Konvertierung des Namespace-erhaltenden bedeutet soap:Body und soap:Envelope Behalten Sie ihre bekannten Namen und die Attributhandhabung behält die Metadaten, die Seife gerne an Elementen aufhängt. Dies ist die gleiche Kategorie von Kleberarbeiten, die in der API-Debugging-Anleitungdrohen
Lesen von RSS- und Atom-Feeds
RSS- und Atom-Feeds sind XML, und wenn sie in eine JavaScript-App gezogen werden, müssen sie konvertiert werden. ein Feed <item> Elemente sind der Fall des Lehrbuchs mit wiederholtem Tag - sie werden zu einem JSON-Array von Elementen, genau das, was Sie möchten .map() runter, um eine Liste zu rendern. Attribute wie ein Gehege url und type werden unter ihren vorgegebenen Schlüsseln aufbewahrt, sodass Podcast- und Medienfeeds ihre Audio-Links intakt halten.
Migrieren von Konfigurations- und Datendateien
Ältere Anwendungen speichern Konfiguration und Daten in XML — Think .config Dateien, Sitemaps, exportierte Datasets, Office-Open-XML-Fragmente. Das Konvertieren in JSON ist der erste Schritt bei der Modernisierung eines Systems oder beim Import von Legacy-Daten in einen JSON-nativen Speicher. Die Option Typ-Parsing ist hier nützlich, wenn Sie kennen Die numerischen Felder sind wirklich numerisch und möchten, dass sie im Ziel eingegeben werden.
Testen und Prototyping
Wenn Sie einen Datenfluss verkabeln und nur die Form einer XML-Nutzlast als JSON sehen müssen, um eine TypeScript-Schnittstelle zu entwerfen, eine Antwort zu verspotten, um einen Feldpfad zu überprüfen -, schlägt eine schnelle Konvertierung im Browser das Schreiben von Throwway-Parser-Codes. Konvertieren, lesen Sie die Struktur, schreiben Sie Ihre Typen dagegen.
XML vs. JSON: Wann passt jedes Format?
| XML | json | |
|---|---|---|
| Primärer Ära & Ökosystem | Unternehmen, SOAP, Dokumente | Web-APIs, Javascript, Konfigurieren |
| Attribute | erstklassig | Keine — Zugeordneten Schlüsseln zugeordnet |
| Arrays | Keine - Wiederholte Tags implizieren Listen | erstklassig |
| Typen | Alle Texte | Zeichenfolgen, Zahlen, Boolesche, null |
| Kommentar | unterstützt | Nicht in der Spezifikation |
| Namensräume | erstklassig | Keine - als vorgefixte Schlüsselnamen |
| Wortaufwand | Höher – Schließen von Tags, Attribute | Senken — Klammern und Klammern |
| Natürlicher Lebensraum | SOAP, RSS/Atom, Office-Formate, Konfigurieren | REST-APIs, Front-End-Daten, package.json |
Das Muster hinter dem Tisch: XML wurde für Dokumente und Enterprise-Interchange erstellt, wo Struktur, Validierung und Selbstbeschreibungssache; JSON wurde für das Web erstellt, wo Leichtigkeit und eine direkte Zuordnung zu JavaScript-Objekten wichtig sind. Die Konvertierungsrichtung ist überwiegend XML-zu-JSON, da die Bewegung in der Branche von älteren XML-basierten Systemen zu JSON-nativen Front-Ends und Diensten geht - Sie treffen auf alte Daten, wo sie leben, und bringen sie in eine moderne Pipeline. Die breitere Gruppe von Formatwerkzeugen für diese Pipeline befindet sich in der Anleitung für die Coding-Toolsdrohen
Ist es sicher, XML mit vertraulichen Daten zu konvertieren?
Integrations-Nutzlasten sind dicht mit Dingen, die Sie nicht auslaufen möchten: SOAP-Antworten mit Kundendatensätzen, Konfigurationsdateien mit internen Endpunkten und Anmeldeinformationen, Datenexporte mit persönlichen Informationen. Und genau das werden in Online-Konverter eingefügt, normalerweise in der Mitte der Integration, normalerweise in Eile.
der toolz.dev-Konverter Analysiert und konvertiert vollständig in Ihrem Browser mit einem abhängigkeitsfreien Parser — Nein DOMParser, kein Serveraufruf, keine Daten verlassen die Seite. Trennen Sie Ihr Netzwerk nach dem Laden der Seite und es funktioniert immer noch. Dies ist eine architektonische Tatsache darüber, wie das Werkzeug aufgebaut ist, kein Versprechen in einem Richtliniendokument, und es ist das Browser-First-Prinzip hinter der gesamten Toolbox, das in der Datenschutz-Leitfadendrohen
Es gilt die Standardbeschränkung: Clientseitige Konvertierung schützt den Konvertierungsschritt. Was Sie danach mit dem JSON tun - wo Sie es einfügen, woran Sie es senden - ist eine separate Entscheidung. Aber die Transformation selbst hält Ihr XML auf Ihrem Computer.
FAQ
Wie konvertiere ich XML online in JSON?
Fügen Sie Ihre XML in den XML-zu-JSON-Konverter ein und klicken Sie auf Konvertieren. Das Tool analysiert das XML, konvertiert es mit der von Ihnen gewählten Einrückung und Optionen in JSON und ermöglicht Ihnen das Kopieren oder Herunterladen des Ergebnisses. Die Verarbeitung erfolgt zu 100% im Browser - nichts wird hochgeladen.
Wie werden XML-Attribute in der JSON-Ausgabe dargestellt?
Attribute werden zu Objektschlüsseln mit dem Präfix @, so dass ein Buchelement mit id="BK101" in einen "@id"-Schlüssel umwandelt. Dadurch werden Attribute von untergeordneten Elementen verschieden. Sie können die Attributausgabe vollständig mit der Option Ignorieren-Attribute deaktivieren, wenn Sie nur die Elementdaten benötigen.
Warum werden einige XML-Elemente zu Arrays und andere bleiben Objekte?
JSON hat keine Möglichkeit, zu markieren, dass ein Element wiederholt wird. Daher verwendet der Konverter das Auftreten: Wenn ein Tag mehr als einmal unter demselben übergeordneten Element erscheint, wird es zu einem Array und wenn es einmal erscheint, bleibt es ein einzelnes Objekt. Dies spiegelt die Quelle treu wider, bedeutet jedoch, dass eine Liste mit einem Element eher wie ein einzelnes Objekt als wie ein Array aussieht.
Behandelt der Konverter CData-Sektionen und XML-Entitäten?
Ja. CData-Blöcke werden wörtlich ohne Entitätsdekodierung gelesen, was ihr Zweck ist. Außerhalb von CData werden die Standard-Entitäten wie <, & amp; &, & amp; und & apos; und numerische Zeichenreferenzen wie é und &é in ihre tatsächlichen Zeichen dekodiert.
Kann ich eine SOAP-Antwort oder einen RSS-Feed in JSON konvertieren?
Ja. SOAP-Umschläge und RSS- oder Atom-Feeds sind gewöhnliche XML-Dateien, also konvertieren sie wie jedes andere Dokument. Namespaced-Tags behalten ihr Präfix im Schlüsselnamen - seap:body wird zu einem "seifen: body" -Schlüssel - und wiederholte Elemente wie RSS-Elemente werden zu einem JSON-Array, das Sie übergeordnet haben können.
Bleiben Zahlen und Boolesche nach der Konvertierung als Text?
Standardmäßig ja, da XML kein Typsystem hat und Werte wie "007" oder "1.10" als Text aussagekräftig sein können. Aktivieren Sie die Option Typ-Parsing, um eindeutigen numerischen und booleschen Text in echte JSON-Nummern und Boolesche Konvertierung zu konvertieren, wenn Sie dies möchten.
Ist es sicher, XML mit vertraulichen Daten zu konvertieren?
Ja. Der Parser läuft in Ihrem Browser vollständig in JavaScript – keine Netzwerkanforderung enthält Ihre Daten, nichts wird protokolliert oder gespeichert und das Tool funktioniert offline. XML mit Kundendatensätzen, internen Kennungen oder Integrationsgeheimnissen verlässt niemals Ihre Maschine.
Was ist der Unterschied zwischen XML und JSON?
XML ist eine Auszeichnungssprache mit dem Öffnen und Schließen von Tags, Attributen, Namespaces und Kommentaren, die für den Austausch von Dokumenten und Unternehmensdaten konzipiert sind. JSON ist ein leichteres Format, das aus Objekten, Arrays und primitiven Werten erstellt wurde und die Standardeinstellung für moderne Web-APIs ist. Die Konvertierung von XML in JSON ist häufig bei der Integration älterer SOAP- oder Feed-basierter Systeme mit JavaScript-Frontends.
XML und JSON sehen austauschbar aus und sind es nicht, da JSON keine Attribute, keine Arrays nach Wiederholung und keine Text-Assozi-Kinder hat - genau die Orte, an denen eine naive Konvertierung stillschweigend Daten verliert. Ein Konverter, der diese Fälle absichtlich behandelt, gibt Ihnen JSON, der der Quelle treu ist: Füge dein XML ein, Überprüfen Sie, wie die Attribute und wiederholten Tags zugeordnet wurden, und bringen Sie saubere Daten anstelle einer plausiblen Korruption in Ihre Pipeline.

