Command Palette

Search for a command to run...

XML в JSON конвертер: превратите SOAP, RSS и XML-конфигурацию в чистый JSON

XML в JSON конвертер: превратите SOAP, RSS и XML-конфигурацию в чистый JSON

T
Toolz Team
|Jul 14, 2026|16 Мин. читать

Часть коллекции Инструменты для данных

Между ними нет стандартного сопоставления. XML 1.0 имеет атрибуты, пространства имен, упорядоченное смешанное содержание и комментарии; RFC 8259 имеет шесть типов и не имеет атрибутов Каждый конвертер изобретает свой собственный мост, поэтому двое из них не согласны.

Интеграция, которая научила меня уважать преобразование XML-JSON, была API-интерфейсами перевозчика. Современный отдых везде в стеке, а затем эта устаревшая конечная точка, которая говорила о SOAP и возвращала конверты XML, которые мне нужно было сложить в конвейер JSON. &quot;Это просто XML в JSON, - подумал я, и потянулся к однострочному конвертеру. Затем пришли крайние случаи: <Package> Элемент, который иногда был одним объектом, а иногда и списком, в зависимости от того, сколько пакетов было в заказе. выше id атрибут, который мой наивный конвертер полностью отбросил, потому что он смотрел только на текст элемента. равняется <Description> завернутый в CDATA, потому что он содержал амперсанд. Каждый из них молча искажал данные - JSON выглядел правдоподобным и ошибался, обнаружив только три службы ниже по течению.

XML и JSON выглядят так, будто им следует тривиально конвертировать друг в друга, и они делают &#39;t, потому что моделируют данные с разными примитивами. у JSON есть объекты, массивы, строки, числа, логические значения и нуль - небольшой чистый набор. XML имеет элементы, атрибуты, текстовые узлы, смешанный контент, пространства имен, CDATA, комментарии и инструкции по обработке, и, что особенно важно, имеет нет массивов а Нет типов, йо- Таким образом, конвертер должен принимать решения, что формат без потерь не будет: куда идут атрибуты, когда JSON не имеет о них концепции? Как отличить один элемент из списка из одного элемента, когда XML обозначает оба одинаково? Что происходит с элементом, который имеет как атрибуты, так и текст?

выше XML в JSON конвертер это делает эти решения намеренно - и последовательно - разница между чистой интеграцией и неделей отладки вниз по течению. тот, который я построил для Toolz.dev, сопоставляет атрибуты с префиксными ключами, чтобы ничего не было потеряно, сворачивает повторяющиеся теги в массивы JSON, чтобы структура сохранялась, сохраняет смешанный контент под выделенным ключом и дословно читает CDATA. И все это делает с помощью анализатора без зависимостей, который работает в вашем браузере, что имеет значение, потому что полезные нагрузки интеграции - это именно тот тип данных, который вы должны &#39;t загружать на незнакомый сервер&#39;s.

В этом руководстве рассматривается, как преобразование обрабатывает структурные причуды XML, когда повторяющиеся элементы становятся массивами, как обращаться с атрибутами и пространствами имен, а также рабочие процессы SOAP и RSS, где это преобразование происходит постоянно.

TL;DR: Вставьте XML в Toolz.dev XML в JSON конвертер, выбираем отступ и получи чистый json, где атрибуты становятся @-префиксные клавиши, повторяющиеся теги становятся массивами, текст смешанного содержания находится под #text, а cdata читается дословно. Опциональный тип разбора "44.95" в реальное число. Он использует синтаксический анализатор без зависимостей, работает на 100% на стороне клиента, поэтому полезные нагрузки SOAP и интеграции никогда не загружаются и сочетаются с json в yaml и тот Форматтер JSON для следующего шага в вашем конвейере.


Почему XML не является JSON простое сопоставление «один к одному»?

Интуитивное представление о том, что XML и JSON взаимозаменяемы, исходит из их общей работы - представления структурированных данных - и разрывает их различные строительные блоки. Несоответствие проявляется в четырех конкретных местах, а качество converter&#39;s полностью зависит от того, как оно обрабатывает их.

Атрибуты не имеют эквивалента JSON. <book id="bk101">War and Peace</book> имеет атрибут (id) и текстовое содержимое (War and Peace). JSON не имеет понятия атрибута; все представляет собой пару ключ-значение. Конвертер должен изобрести соглашение, и широко распространенное соглашение - префикс ключей атрибутов - { "book": { "@id": "bk101", "#text": "War and Peace" } }, йо- Отбросьте атрибуты, как это делают наивные конвертеры, и вы молча теряете данные.

JSON имеет массивы; XML не выполняет. В XML список — это тот же самый тег, который повторяется: три <item> элементы под одним родителем. Но один <item> выглядит структурно идентично списку из одного. JSON необходимо знать, излучать ли объект или массив, и единственный доступный сигнал - это вхождение - поэтому повторяющиеся теги становятся массивами, а отдельные теги остаются объектами.

Смешанный контент. Элемент может содержать как дочерние элементы, так и свободный текст. Объекты JSON не могут естественным образом представлять &quot;этот объект также имеет голое значение, поэтому текст переходит под зарезервированный ключ, например #text, йо-

Типы не существуют в XML. Каждое значение в XML — это текст. <price>44.95</price> это струна "44.95", а не число, если конвертер не решит его принудить - и этот выбор может быть неправильным, потому что <zip>08544</zip> Должен оставаться струной или потерять ведущий ноль.

выше преобразователь обрабатывает каждый из них явно, а не притворяться, что их не существует. Вот почему вывод остается верным источнику, а не тихонько отбрасывает те части XML, для которых у JSON нет слота.

Когда повторяющиеся элементы становятся массивами?

Это самая запутанная часть преобразования XML в JSON, и ее стоит понять, а не удивлять. правило преобразователь Используется на основе вхождения: в пределах данного родителя, если имя тега появляется более одного раза, его значения сворачиваются в массив JSON; если он появляется ровно один раз, он остается одним объектом или значением.

так что <catalog> с <book> Дети производит { "catalog": { "book": [ {...}, {...} ] } } - массив. Но а <catalog> с одним <book> производит { "catalog": { "book": {...} } } - простой объект, без массива.

Последствия планирования: Список одного элемента не похож на список. Если ваш нисходящий код ожидает catalog.book Чтобы всегда быть массивом и перебирать его, ответ одной книги сломает его, потому что book будет объектом в то конкретное время. Это &#39;t ошибка в преобразовании - it&#39;s неизбежное последствие того, что XML не маркирует списки - но it&#39;s настоящая попалась в интеграциях, где количество элементов меняется.Моя катастрофа с доставкой-перевозчиком была именно такой: заказы на одну упаковку возвращали объект, где заказы на несколько пакетов возвращали массив, а мой код принимал массив.

Защитный шаблон в вашем коде потребления заключается в нормализации: если поле может быть либо, принудите его к массиву перед итерацией ([].concat(catalog.book)). знатный почему Форма меняется, это то, что позволяет вам писать этот охранник, а не оживать.

Как обрабатываются атрибуты и пространства имен?

Атрибуты преобразуют в ключи объекта с помощью @ префикс. <user role="admin" active="true"> становиться { "user": { "@role": "admin", "@active": "true" } }. Префикс сохраняет атрибуты визуально отличными от дочерних элементов и предотвращает столкновение, при котором атрибут и дочерний элемент имеют общее имя. Если вам вообще нужны атрибуты &#39; вам нужны только данные элемента - преобразователь Имеет опцию "Ignore Attributes", которая полностью отбрасывает их для более чистого результата.

Пространства имен проходят как часть имени тега. <soap:Body> становится ключом буквально назван "soap:Body", и xmlns:soap="..." является атрибутом, как и любой другой, посадка под @xmlns:soap, йо- Это прагматичный выбор: полное разрешение пространств имен для их URI будет создавать громоздкие ключи и редко соответствует тому, что на самом деле хочет интеграционный код, то есть для адреса soap:Body по его знакомому префиксу имени. Если вы обрабатываете SOAP или SVG или любую лексику с именами, префиксы, которые вы знаете из XML, являются ключами, которые вы получаете в JSON.

Разделы CDATA - <![CDATA[ ... ]]> блоки, которые позволяют XML нести необработанный текст со специальными символами - читаются дословно, без декодирования сущностей, что и является их целью. А <script> или <description> Окутанный CDATA для защиты своих амперсантов и угловых скобок сплошь эти символы. Вне CDATA, стандартные объекты (&lt;, &amp;, и друзья) и числовые ссылки (&#233;, &#xE9;) расшифровываются до своих реальных персонажей.

Как преобразовать XML в JSON с помощью инструмента?

Шаг 1: Вставьте свой XML

Любой хорошо сформированный XML работает - с или без <?xml ?> объявление, с пространствами имен или без них. Объявление, doctype, комментарии и инструкции обработки распознаются и пропущены, поэтому вы можете вставить полный документ прямо из ответа API или файла. Кнопка «Загрузить образец» дает вам каталог с атрибутами, вложенными элементами и повторяющимся тегом, поэтому вы можете видеть каждое поведение преобразования одновременно.

Шаг 2: выберите варианты

Выберите 2- или 4-пробелоуем для JSON. Решите, включать ли атрибуты или бросить их. и выберите, следует ли анализировать типы: оставить его в выключенном состоянии, и каждое значение остается строкой (безопасная, без потерь); включите ее, и однозначные числа и булевы станут реальными числами JSON и логическими значениями. OFF является правильным значением по умолчанию, когда такие значения, как почтовые индексы или идентификаторы, могут иметь начальные нули, которые вам нужно сохранить.

Шаг 3: конвертировать и пересматривать

Конвертер сначала анализирует и сообщает о неправильной разметке - несоответствующем закрывающем теге, незакрытом элементе, незавершенном блоке CDATA - с определенным сообщением, а не с созданием мусора JSON. При успехе появляется JSON с подсчетом строк и байтов. Пропустите его, чтобы подтвердить, что решения "массив против объекта" соответствуют вашим ожиданиям.

Шаг 4: Скопируйте или скачайте

Скопируйте JSON в буфер обмена для вставки в код или загрузите его как .json пилка Отсюда он попадает в тело запроса, хранилище данных или следующий этап вашего конвейера. Если следующим шагом является формат конфигурации, JSON в YAML конвертер В дальнейшем.

Каковы общие рабочие процессы для этого преобразования?

Интеграция API API Legacy

SOAP по-прежнему везде в корпоративных, банковских, логистических и государственных системах, и оно говорит исключительно на XML. Когда современный JavaScript или служба узла должны потреблять ответ SOAP, преобразование XML-конверта в JSON является первым шагом. Средство преобразования пространства имен soap:Body а soap:Envelope Сохраняйте свои знакомые имена, а обработка атрибутов сохраняет метаданные, которые SOAP любит зависать над элементами. Это та же категория клеевых работ, описанная в Руководство по отладке API, йо-

Чтение RSS и Atom Feeds

RSS и Atom Feeds — это XML, и их включение в приложение JavaScript означает их преобразование. лента <item> элементы - это случай с повторяющимися тегами в учебнике: они становятся массивом элементов JSON, именно тем, что вы хотите .map() чтобы отобразить список. Атрибуты, такие как вольер url а type Сохраняются под их ключами с префиксом, поэтому подкасты и медиа-канаты сохраняют свои аудиоссылки нетронутыми.

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

Старые приложения хранят конфигурацию и данные в XML - подумайте .config Файлы, карты сайта, экспортированные наборы данных, фрагменты XML Office Open. Преобразование их в JSON — это первый шаг при модернизации системы или импорте устаревших данных в хранилище JSON-Native. Параметр «Тайп-парсинг» полезен здесь, когда вы знать Числовые поля действительно числовые и хотят, чтобы они были введены в пункт назначения.

Тестирование и прототипирование

Когда вы &#39;подключаете поток данных и вам просто нужно увидеть форму полезной нагрузки XML как JSON - чтобы разработать интерфейс TypeScript, высмеять ответ, проверить путь к полю - быстрое преобразование в браузере превосходит написание одноразового кода синтаксического анализатора. Преобразовать, прочитать структуру, записать свои типы против нее.

XML против JSON: Когда подходит каждый формат?

хм-лиг JSON
Первичная эра и экосистема Предприятие, мыло, документы Веб-API, JavaScript, конфигурация
атрибуты первоклассный Нет - сопоставлено с префиксными ключами
широкие стрел Нет - повторяющиеся теги подразумевают списки первоклассный
род Весь текст строки, числа, булевы, null
замечания поддерживаемый не в спецификации
Пространства имен первоклассный Нет - сохраняется в виде префиксных имен клавиш
многословие Выше - закрытие тегов, атрибутов Нижний - раскосы и кронштейны
естественная среда обит SOAP, RSS/Atom, Office Formats, конфигурация REST API, данные интерфейса, package.json

Шаблон за столом: XML был создан для документов и обмена предприятиями, где важны структура, проверка и самоописание; JSON был создан для Интернета, где важны легкость и прямое сопоставление с объектами JavaScript. Направление преобразования в подавляющем большинстве соответствует XML-JSON, поскольку движение в отрасли происходит от старых систем на основе XML к исходным для JSON интерфейсам и услугам - вы и #39; встречаться с устаревшими данными там, где они живут, и приводить их в современный конвейер. Более широкий набор инструментов формата для этого конвейера находится в Руководство по инструментам кодирования, йо-

Безопасно ли конвертировать XML, содержащий конфиденциальные данные?

Полезные нагрузки интеграции плотны от вещей, которые вы не хотите утечивать: ответы SOAP, несущие записи клиентов, конфигурационные файлы с внутренними конечными точками и учетными данными, экспорт данных с личной информацией. И это именно то, что вставляется в онлайн-конвертеры, обычно в середине интеграции, обычно в спешке.

выше Конвертер Toolz.dev анализирует и полностью преобразует в вашем браузере с помощью анализатора без зависимостей - нет DOMParser, нет вызова сервера, никаких данных, покидающих страницу. Отключите сеть после загрузки страницы, и она все еще работает. Это архитектурный факт о том, как создается инструмент, а не обещание в политического документа, а это принцип браузера, лежащий в основе всего набора инструментов, подробно описанный в Руководство по конфиденциальности данных, йо-

Применяется стандартное предостережение: преобразование на стороне клиента защищает шаг преобразования. То, что вы делаете с JSON после - куда вы вставляете его, на что вы отправляете - это отдельное решение. но само преобразование сохраняет ваш XML на вашей машине.

часто задаваемые вопросы

Как преобразовать XML в JSON онлайн?

Вставьте свой XML в конвертер XML в JSON и нажмите Convert. инструмент анализирует XML, преобразует его в JSON с выбранным вами отступом и параметрами и позволяет копировать или загружать результат. обработка на 100% в браузере - ничего не загружается.

Как атрибуты XML представлены в выводе JSON?

Атрибуты становятся ключами объектов с префиксом @, поэтому элемент книги с id=&quot;bk101&quot; преобразует в ключ "@id". Это сохраняет атрибуты, отличные от дочерних элементов. Вы можете полностью отключить вывод атрибута с помощью опции ignore-attribute, если вам нужны только данные элемента.

Почему некоторые XML-элементы становятся массивами, а другие остаются объектами?

JSON не может пометить, что элемент может повторяться, поэтому конвертер использует вхождение: если тег появляется более одного раза под одним и тем же родителем, он становится массивом, а если он появляется, когда он остается одним объектом. Это точно отражает источник, хотя это означает, что список с одним элементом выглядит как один объект, а не массив.

Конверт обрабатывает разделы CDATA и XML-сущности?

да. Блоки CDATA читаются дословно без декодирования сущностей, что является их целью. Вне CDATA такие стандартные сущности, как &lt;, &gt;, &quot;, и числовые символы, такие как &#233; и &#xe9; декодируются в их фактические символы.

Могу ли я преобразовать SOAP-ответ или RSS-канал в JSON?

Да. SOAP конверты и RSS или Atom ленты являются обычным XML, поэтому они конвертируют, как любой другой документ. теги с пространством имен сохраняют свой префикс в ключевом имени - мыло:Тело становится & quot;мыло:Body&quot; ключ - и повторяющиеся элементы, как RSS элементы становятся массивом JSON, который вы можете сопоставить.

Будут ли числа и логические значения оставаться текстовыми после преобразования?

По умолчанию да, поскольку в XML нет системы типов и значений, таких как "007" или "1.10" может быть значимым в виде текста. Включите параметр «Тайп-парсинг», чтобы преобразовать однозначный числовой и логический текст в реальные числа JSON и логические значения, когда это то, что вам нужно.

Безопасно ли конвертировать XML, содержащий конфиденциальные данные?

Да. синтаксический анализатор полностью работает на JavaScript в вашем браузере - ни один сетевой запрос не несет ваши данные, ничего не регистрируется и не сохраняется, а инструмент работает в автономном режиме. XML с записями клиентов, внутренними идентификаторами или секретами интеграции никогда не покидает вашу машину.

В чем разница между XML и JSON?

XML — это язык разметки с открытием и закрытием тегов, атрибутами, пространствами имен и комментариями, предназначенными для обмена документами и корпоративными данными. JSON — это более легкий формат, созданный из объектов, массивов и примитивных значений, и по умолчанию используется для современных веб-API. Преобразование XML в JSON является обычным явлением при интеграции старых систем SOAP или Feed с интерфейсами JavaScript.


XML и JSON выглядят взаимозаменяемыми и являются &#39;t, поскольку у JSON нет атрибутов, массивов за повторением и нет текста рядом с детьми - именно в этих местах наивное преобразование молча теряет данные. Конвертер, который намеренно обрабатывает эти случаи, дает вам JSON то, что &#39;s верен источнику: Вставьте свой XML, проверьте, как он сопоставил атрибуты и повторяющиеся теги, и привнесите в конвейер чистые данные вместо коррупции с правдоподобным видом.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!