Руководство по конвертации XML и JSON: Трансформация файлов конфигурации и форматов данных API

JSON

Ключевые различия: XML vs JSON

Характеристика XML JSON
Формат данных Разметка на основе тегов Пары ключ-значение
Атрибуты Да (<node attr="val">) Нет (атрибуты становятся полями)
Пространства имён Да (xmlns) Нет
Комментарии Да (<!-- -->) Нет
Массивы Неявные (повторяющиеся элементы) Явные ([])
Текстовые узлы Смешанное содержимое (теги + текст) Простые строковые значения

XML лучше для документо-ориентированных данных (SVG, HTML, конфигурации). JSON лучше для структурированных данных (ответы API).


Как атрибуты XML отображаются в JSON

Элементы XML могут иметь как атрибуты, так и текстовое содержимое — это сложная часть конвертации:

Простой элемент

<person name="John" age="30"/>
{
  "person": {
    "@name": "John",
    "@age": "30"
  }
}

Соглашение: используйте префикс @ для атрибутов XML. Это самое распространённое правило конвертации.

Смешанное содержимое (Атрибуты + Текст)

<price currency="USD">68.00</price>
{
  "price": {
    "@currency": "USD",
    "#text": "68.00"
  }
}

Используйте #text для текстового содержимого элемента, чтобы отличить его от атрибутов.


Определение массивов: Самая распространённая проблема

В XML массивы неявные — повторяющиеся элементы с одинаковым именем образуют массив:

<books>
  <book>Three-Body Problem</book>
  <book>To Live</book>
</books>
{
  "books": {
    "book": ["Three-Body Problem", "To Live"]
  }
}

Проблема: С одним элементом XML не может отличить его от не-массива:

<books>
  <book>Three-Body Problem</book>
</books>

Это может быть конвертировано в:

{
  "books": {
    "book": "Three-Body Problem"
  }
}

Решение: В инструменте XML↔JSON отметьте «Принудительный массив» и укажите, какие элементы всегда должны обрабатываться как массивы.


Обработка пространств имён

Пространства имён XML не имеют прямого эквивалента в JSON:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <m:GetPrice xmlns:m="http://example.com">
      <m:Item>123</m:Item>
    </m:GetPrice>
  </soap:Body>
</soap:Envelope>

Распространённые стратегии:

Стратегия Описание Случай использования
Сохранить префикс soap:Body"soap:Body" Обработка SOAP/WSDL
Удалить префикс soap:Body"Body" Простые случаи, без конфликтов
Ключ пространства имён {soap}Body Нужно различать одноимённые элементы из разных пространств имён

Используйте Форматирование XML для приведения в порядок XML перед конвертацией.


Использование инструмента XML↔JSON

Шаг 1: Откройте инструмент

Посетите инструмент XML↔JSON и выберите направление конвертации.

Шаг 2: Введите исходные данные

  • XML → JSON: Вставьте строку XML
  • JSON → XML: Вставьте строку JSON

Вы можете сначала отформатировать ввод с помощью Форматирования JSON или Форматирования XML.

Шаг 3: Настройте параметры конвертации

Параметр Описание
Префикс атрибута Отображать атрибуты как @attr или $attr
Ключ текстового узла Отображать текстовое содержимое как #text или _text
Принудительный массив Указать имена элементов, которые всегда должны быть массивами
Пространства имён Сохранить / удалить / преобразовать

Шаг 4: Выполните конвертацию

Нажмите «Конвертировать», проверьте результат и скопируйте.


Практические сценарии

Миграция файлов конфигурации

Многие устаревшие проекты используют XML-конфигурации (Spring, Maven). Новые проекты предпочитают YAML/JSON:

pom.xml → package.json (информация о зависимостях)
spring-config.xml → application.json (конфигурация Bean)

SOAP API в REST

Ответы SOAP — это XML; их нужно конвертировать в JSON для использования во фронтенде:

XML-ответ SOAP → JSON → рендеринг фронтенда

Извлечение метаданных SVG

SVG — формат XML; извлеките метаданные в JSON для программной обработки:

<svg width="100" height="100"> → {"svg": {"@width": "100", "@height": "100"}}

Особенности конвертации JSON в XML

При конвертации JSON в XML обратите внимание:

Особенность Описание
Корневой элемент JSON должен иметь один корневой ключ
Допустимость имени ключа Имена XML-тегов не могут начинаться с цифры или содержать пробелы
Обёртка массивов Массивам JSON нужно имя элемента-обёртки
Специальные символы <, >, & должны быть экранированы как сущности

Частые проблемы

Проблема Причина Решение
Одиночный элемент не конвертирован в массив XML не может отличить одиночный элемент от массива Отметьте «Принудительный массив»
Атрибуты потеряны Правила конвертации без префикса атрибута Проверьте настройку префикса атрибута
Конфликт пространств имён Одноимённые элементы в разных пространствах имён Сохраните префиксы пространств имён
Ошибка JSON в XML Недопустимое имя ключа Переименуйте ключ в соответствии со спецификацией XML
Смешанное содержимое потеряно Ключ текстового узла некорректно сопоставлен Проверьте конфигурацию #text

Итоги

Конвертация XML↔JSON — распространённая потребность при миграции форматов данных и интеграции API. Понимание трёх ключевых проблем — сопоставления атрибутов, определения массивов и пространств имён — является ключом к корректной конвертации. Инструмент XML↔JSON предоставляет гибкие параметры конвертации, а Форматирование JSON и Форматирование XML дополняют ваш рабочий процесс конвертации форматов.

#XML#JSON#格式转换#API#配置