§

Введення

Режим
§

Вивід

Українські команди постійно зв'язують XML та JSON, коли дві частини стека не домовляються, який формат використовувати. SOAP-сервіси банків і страхових компаній досі повертають XML-конверти, які React-фронтенди хочуть у вигляді JSON. Медичні системи на базі HL7 FHIR публікують ресурси в обох форматах. AWS SNS, SQS та різні урядові реєстри постачають дані у XML, які інженери перетворюють у JSON для завантаження в бази даних. Рішення однакове у всіх випадках: швидкий локальний конвертер, який можна повторно запускати на новому навантаженні без надсилання будь-куди.

Що таке конвертація XML ↔ JSON?

XML (Extensible Markup Language) — це теговий текстовий формат для ієрархічних даних. Він використовується у SOAP-вебсервісах, стрічках RSS і Atom, медичних записах HL7 FHIR, файлах sitemap.xml та конфігураційних файлах Maven, Spring і Android Gradle. JSON (JavaScript Object Notation, визначений у RFC 8259) описує той самий тип вкладених даних, але з фігурними дужками та масивами замість відкриваючих і закриваючих тегів. JSON — це те, що сьогодні говорить практично кожен REST API, і це нативна форма значень кожного браузерного рантайму. Конвертація між двома форматами здається тривіальною, поки не зустрінете атрибути, змішаний вміст, повторювані нащадки та CDATA. Власний regex — неправильна відповідь; справжній парсер — правильна. Цей інструмент постачає справжній парсер (fast-xml-parser) і запускає його у вашому браузері.

Як працює відображення XML ↔ JSON?

Кожне перетворення виконується локально у вашому браузері за допомогою вбудованої бібліотеки fast-xml-parser (MIT, версія 4.x). Основні правила відображення:

  1. Елемент у ключ: кожне ім'я XML-елемента стає ключем JSON-об'єкта. <user><name>Alice</name></user> відображається на {"user":{"name":"Alice"}}.
  2. Атрибут у ключ з префіксом: атрибут зберігається під ключем, утвореним додаванням вибраного префіксу. З префіксом @, <user id="1"> дає {"user":{"@id":"1"}}.
  3. Текстовий вміст у ключ текстового вузла: коли елемент має і атрибути, і текст, текст потрапляє під вибраний ключ текстового вузла. <price currency="USD">9.99</price> з ключем #text дає {"price":{"@currency":"USD","#text":"9.99"}}.
  4. Повторювані нащадки в масив: коли увімкнено Примусовий масив для повторюваних дочірніх тегів, кілька елементів-сиблінгів з однаковим ім'ям згортаються в JSON-масив. <items><item>A</item><item>B</item></items> стає {"items":{"item":["A","B"]}}.
  5. Секції CDATA: необроблений текст усередині <![CDATA[…]]> зберігається під ключем #cdata, щоб кутові дужки та амперсанди не перекодовувалися під час зворотного перетворення.
  6. JSON до XML реверсує відображення: ключі об'єктів стають елементами, ключі з префіксом стають атрибутами, а масиви розгортаються у повторювані елементи-сиблінги.

Чому варто конвертувати XML та JSON цим інструментом?

  • Ваші дані залишаються на вашому пристрої. Кожен розбір і кожна побудова виконуються в JavaScript-контексті цієї сторінки. FHIR-пакети пацієнтів, SOAP-конверти автентифікації, конфіденційні файли конфігурації, білінгові експорти — нічого з цього не торкається наших серверів, бо в коді немає кроку завантаження. Відкрийте панель мережі та переконайтеся.
  • SOAP до REST-орієнтованого фронтенду — найпоширеніший запит. Банк або страхова компанія відкриває SOAP-ендпоінт, який ще роками не буде виведений з експлуатації; React або Vue-застосунок, що звертається до нього, не хоче вчити XML. Вставте конверт, отримайте JSON назад з префіксованими атрибутами та збереженими просторами імен, помістіть вміст Body у ваше сховище стану.
  • Споживачі RSS, Atom та sitemap також отримають користь. Директорій подкастів, агрегатор новин або внутрішній дашборд, що споживає sitemap.xml, можуть повністю оминути написання XML-парсера. Конвертуйте стрічку один раз, працюйте з JSON-масивом, і ваш клієнтський код залишається у тій мові, якою вже розмовляє.
  • Конфігураційний експорт завершує список. Maven, Spring, Android Gradle та старі збірки Ant генерують XML; хмарні нативні інструменти на іншому кінці (Terraform, Ansible, GitHub Actions, cloud-init) читають JSON або YAML. Конвертуйте у браузері замість запуску Python-скрипта зі стороньою залежністю — особливо корисно у повітряно-ізольованих середовищах, де вставка в невідомий вебсервіс є неприйнятною.

Які поширені застосування конвертації XML ↔ JSON?

З'єднання XML та JSON трапляється в інтеграційній інженерії, API-інструментах та інженерії даних. Кілька шаблонів домінують у навантаженні:

  • Зв'язок SOAP з REST: витягування навантаження Body з SOAP-конверта, поверненого застарілим банківським або страховим API, та конвертація його у JSON, щоб фронтенд React або Vue міг споживати його без серверного проксі.
  • Медичні записи FHIR: конвертація XML-пакетів HL7 FHIR у JSON для завантаження в колекцію MongoDB Atlas або стовпець PostgreSQL JSONB, де аналітики можуть їх запитувати.
  • Обробка sitemap та стрічок: перетворення sitemap.xml або стрічки RSS/Atom у JSON-масив, щоб власний індексатор, бот Slack або віджет дашборду міг ітерувати записи без підключення XML-парсера як залежності.

Як виглядає зворотне перетворення XML ↔ JSON?

Невеликий приклад. Вставте <user id="1"><name>Alice</name></user> у введення, встановіть префікс атрибутів на @, залиште режим XML до JSON і натисніть Конвертувати. Вивід: {"user":{"@id":"1","name":"Alice"}}. Переключіть режим на JSON до XML, вставте цей JSON назад, встановіть відступ 2 пробіли і натисніть Конвертувати знову. Отримаєте <user id="1">\n <name>Alice</name>\n</user>, структурно ідентичний оригіналу. Єдина невизначеність при зворотному перетворенні — порядок атрибутів, бо ключі JSON-об'єктів невпорядковані за специфікацією.

Цей конвертер XML ↔ JSON постачає fast-xml-parser@4, вбудований у той самий ресурс, обробляє атрибути, CDATA, повторювані дочірні теги та префікси просторів імен і продовжує працювати офлайн після завантаження сторінки. Без кроку завантаження, без CDN-проксі, без аналітичного маяка, без жодної телеметрії. Кожен байт введення та виводу залишається у вашому браузері — саме те, що потрібно, коли навантаженням виявляється FHIR-пакет пацієнта, SOAP-конверт автентифікації або будь-яка інша форма даних, яку ніхто поза вашою командою не повинен бачити.