§

Wejście

Tryb
§

Wyjście

Polskie zespoły integracyjne łączą XML i JSON codziennie, zazwyczaj dlatego że dwie połowy stosu nie zgadzają się co do formatu. Usługi SOAP banków takich jak PKO BP i Pekao SA nadal zwracają koperty XML, które front-endy React chcą jako JSON. Dokumenty HL7 FHIR wymieniane przez polskie systemy e-zdrowie (P1, P2) są dostępne zarówno w XML jak i JSON. Eksporty z KSeF, rejestry GUS i pliki CEIDG często przychodzą jako XML, który inżynierowie reshapują do JSON zanim trafi do Snowflake lub BigQuery. Rozwiązanie jest w każdym przypadku takie samo: szybki, lokalny konwerter, który możesz uruchomić ponownie na świeżym payloadzie bez wysyłania go gdziekolwiek.

Czym jest konwersja XML ↔ JSON?

XML (Extensible Markup Language) to oparty na tagach format tekstowy dla danych hierarchicznych. Spotkasz go w usługach sieciowych SOAP, kanałach RSS i Atom, dokumentach zdrowotnych HL7 FHIR, plikach sitemap.xml i plikach konfiguracyjnych dostarczanych z Maven, Spring i Android Gradle. JSON (JavaScript Object Notation, zdefiniowany przez RFC 8259) opisuje ten sam rodzaj zagnieżdżonych danych, ale z nawiasami klamrowymi i tablicami zamiast tagów otwierających i zamykających. JSON jest tym, czym mówi prawie każde REST API dzisiaj i to natywny kształt wartości każdego runtime przeglądarki. Konwersja między tymi dwoma formatami jest jednym z tych zadań, które brzmią trywialnie dopóki nie trafisz na atrybuty, zawartość mieszaną, powtarzające się dzieci i CDATA. Własne wyrażenie regularne to zła odpowiedź; prawdziwy parser to właściwa. To narzędzie dostarcza prawdziwy parser (fast-xml-parser) i uruchamia go w przeglądarce, więc możesz wkleić kopertę XML zwróconą przez starszą usługę SOAP i zobaczyć ją jako obiekt JSON, który możesz upuścić prosto do sklepu Redux, lub wziąć payload JSON złożony w kliencie REST i zamienić go z powrotem w kształt XML jakiego oczekuje korporacyjny endpoint.

Jak działa mapowanie XML ↔ JSON?

Każda konwersja działa lokalnie w przeglądarce używając dołączonej biblioteki fast-xml-parser (MIT, wersja 4.x). Reguły mapowania wysokiego poziomu:

  1. Element do klucza: każda nazwa elementu XML staje się kluczem obiektu JSON. <user><name>Alice</name></user> mapuje się do {"user":{"name":"Alice"}}.
  2. Atrybut do klucza z prefiksem: atrybut jest przechowywany pod kluczem sformowanym przez dodanie wybranego prefiksu. Z prefiksem @, <user id="1"> produkuje {"user":{"@id":"1"}}.
  3. Zawartość tekstowa do klucza węzła tekstowego: gdy element ma zarówno atrybuty jak i tekst, tekst ląduje pod wybranym kluczem węzła tekstowego. <price currency="USD">9.99</price> z kluczem #text produkuje {"price":{"@currency":"USD","#text":"9.99"}}.
  4. Powtarzające się dzieci do tablicy: gdy Wymuś tablicę dla powtarzających się tagów potomnych jest włączone, wiele sibling elementów o tej samej nazwie zwija się do tablicy JSON. <items><item>A</item><item>B</item></items> staje się {"items":{"item":["A","B"]}}.
  5. Sekcje CDATA: surowy tekst wewnątrz <![CDATA[…]]> jest zachowywany pod kluczem #cdata, więc nawiasy kątowe i ampersandy nie są re-escapowane podczas round-tripu.
  6. JSON do XML odwraca mapowanie: klucze obiektów stają się elementami, klucze z prefiksem stają się atrybutami, a tablice rozwijają się w powtarzające się sibling elementy.

Dlaczego konwertować XML i JSON tym narzędziem?

  • Twoje dane pozostają na Twoim komputerze. Każde parsowanie i każde budowanie działa w kontekście JavaScript tej strony. Pakiety pacjentów FHIR, koperty uwierzytelniające SOAP, własnościowe pliki konfiguracyjne, eksporty rozliczeniowe — żadne z nich nie dotyka naszych serwerów, bo w ścieżce kodu nie ma kroku wysyłania. Otwórz panel sieci i obserwuj.
  • Starszy SOAP w front-endzie REST-first to najczęstsze pytanie jakie słyszymy. Bank lub ubezpieczyciel ma endpoint SOAP, który nie będzie wycofany przez lata; aplikacja React lub Vue do niego wywołująca nie chce uczyć się XML. Wklej kopertę, uzyskaj JSON z prefiksowanymi atrybutami i zachowanymi przestrzeniami nazw, upuść zawartość Body do swojego store'a stanów.
  • Konsumenci RSS, Atom i sitemap też korzystają. Katalog podcastów, agregator wiadomości lub wewnętrzny dashboard przyjmujący sitemap.xml może całkowicie pominąć pisanie parsera XML. Skonwertuj feed raz, pracuj z tablicą JSON, a kod klienta pozostaje w języku, który już mówi.
  • Eksport konfiguracji uzupełnia listę. Maven, Spring, Android Gradle i staromodne builde Ant emitują XML; natywne narzędzie chmurowe po drugiej stronie (Terraform, Ansible, GitHub Actions, cloud-init) czyta JSON lub YAML. Konwertuj w przeglądarce zamiast uruchamiać skrypt Pythona z zależnością firmy trzeciej — szczególnie przydatne w środowiskach air-gapped gdzie wklejanie do nieznanej usługi webowej jest wykluczone.

Jakie są typowe zastosowania konwersji XML ↔ JSON?

Łączenie XML i JSON pojawia się w inżynierii integracji, narzędziach API i inżynierii danych. Kilka wzorców dominuje w obciążeniu pracy:

  • Mostkowanie SOAP do REST: wyciąganie payloadu Body z koperty SOAP zwróconej przez starsze API bankowe lub ubezpieczeniowe i konwertowanie go do JSON, by front-end React lub Vue mógł go konsumować bez warstwy proxy po stronie serwera.
  • Dokumenty zdrowotne FHIR: konwertowanie pakietów XML HL7 FHIR (format wymagany przez HHS/ONC i NHS Digital do wymiany danych klinicznych) do JSON do ładowania do kolekcji MongoDB Atlas lub kolumny PostgreSQL JSONB gdzie analitycy mogą je zapytywać.
  • Przetwarzanie sitemap i kanałów: zamiana sitemap.xml lub kanału RSS/Atom w tablicę JSON, by własny indekser, bot Slack lub widget dashboardu mógł iterować po wpisach bez ściągania parsera XML jako zależności.

Jak wygląda round-trip XML ↔ JSON?

Weź mały przykład. Wklej <user id="1"><name>Alice</name></user> do wejścia, ustaw prefiks atrybutu na @, pozostaw tryb na XML do JSON i naciśnij Konwertuj. Wyjście to {"user":{"@id":"1","name":"Alice"}}. Przełącz tryb na JSON do XML, wklej ten JSON z powrotem, ustaw wcięcie na 2 spacje i naciśnij Konwertuj ponownie. Otrzymasz <user id="1">\n <name>Alice</name>\n</user>, strukturalnie identyczne z oryginałem. Jedyną rzeczą nie gwarantowaną przez round-trip jest kolejność atrybutów, bo klucze obiektów JSON są nieuporządkowane według specyfikacji.

Ten konwerter XML ↔ JSON dostarcza fast-xml-parser@4 dołączonego w tym samym origin, obsługuje atrybuty, CDATA, powtarzające się tagi potomne i prefiksy przestrzeni nazw, i działa offline po załadowaniu strony. Żadnego kroku wysyłania, żadnego proxy CDN, żadnego beacona analitycznego, żadnej telemetrii żadnego rodzaju. Każdy bajt wejścia i wyjścia pozostaje w przeglądarce, co jest dokładnie tym czego chcesz gdy payload jest pakietem pacjentów FHIR, kopertą uwierzytelniającą SOAP lub innym kształtem danych, którego nikt poza Twoim zespołem nigdy nie powinien zobaczyć.