Хотя JSON популярен для работы с веб-сервисами, сферы финансов и здравоохранения по-прежнему опираются на XML. Поэтому умение преобразовывать SQL в XML и наоборот станет вашим ценным навыком.

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

  • Экспорт данных SQL в формат XML;
  • Импорт XML-файла обратно в таблицу SQL;
  • Способы представления XML-файла;
  • Представление XML-данных в визуально привлекательном виде.

Цель этого руководства — предоставить единый подход к преобразованию данных SQL в XML. Для этого не нужно будет использовать синтаксис SQL.

Что такое n8n?

Это доступная платформа автоматизации рабочих процессов с закрытым исходным кодом для технических специалистов, которым важна скорость разработки. Инструмент позволяет делать любые интеграции с помощью сотен выделенных узлов или настраивать пользовательский HTTP-запрос.

Что такое XML?

XML, или расширяемый язык разметки (eXtensible Markup Language), — это широко используемый формат для обмена информацией между различными платформами. XML обладает высокой адаптивностью, что позволяет легко расширять его.

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

<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Как преобразовать SQL в XML?

Движки SQL предоставляют собственные способы экспорта SQL в XML. Например:

Как видите, каждый механизм SQL использует собственный способ экспорта в XML. Правда, было бы здорово, если бы существовал единый инструмент конвертации? Еще бы он работал со всеми типами данных SQL… К счастью, такой инструмент существует.

С n8n вам больше не придется разбираться с отдельными интерфейсами SQL и конвертерами XML. Вместо этого вы получите всеобъемлющую платформу, которая объединяет в себе и то, и другое.

Как экспортировать SQL в XML с помощью n8n?

Этот простой сценарий создает 2 XML-файла: с атрибутами XML и без них

Давайте рассмотрим сценарий для экспорта таблиц SQL в формат XML.

Шаг 1. Извлеките данные из SQL

Существует узел SQL, который извлекает 16 случайных записей из базы данных. Если у вас уже есть данные на языке SQL, используйте соответствующий узел (n8n поддерживает различные SQL-движки через специальные узлы).

💡 Вы также можете прочитать статью «Как сравнивать базы данных через Compare Datasets». Там вы получите подробные инструкции по созданию бесплатной учетной записи MySQL и импорту базы данных образца.

Таблица Products содержит информацию об игрушечных автомобилях

После настройки подключения к базе данных получите несколько записей с помощью следующего SQL-запроса:

SELECT * from products ORDER BY RAND() LIMIT 16;

Шаг 2. Создайте простой XML-файл из таблицы SQL

Теперь давайте создадим простой XML-файл из этих данных. Добавим узел Set и определим несколько строковых переменных, как показано на скриншоте.

Определите структуру будущего XML-файла в узле Set

Чтобы обратиться к вложенным элементам объектов, в ключах можно использовать точку. Например, имя Product.Code означает, что сначала будет создан JSON-ключ Product, а затем в качестве дочернего будет создан ключ Code.

Обратите внимание на структуру JSON в правой части скриншота.

Далее узел ItemLists используется для создания массива элементов.

Объедините элементы в один массив, если хотите получить их все в одном XML-выводе

Почему это необходимо?

Если пропустить этот шаг, в узле XML будет создано 16 XML-файлов с одним элементом. Если вы хотите получить все 16 элементов в одном файле, то их необходимо объединить.

💡 Обратите внимание, что правильный XML-файл должен иметь корневой элемент. Именно поэтому мы написали Products в опции Put Output in Field. Таким образом, у нас будет корневой элемент Products, затем несколько записей Product, каждая из которых содержит элементы Code, Name, Line, Scale и Price.

На этом предварительная обработка заканчивается, теперь мы можем сгенерировать XML-файл с помощью узла XML.

Объекты JSON легко преобразуются в XML и наоборот

Узел XML генерирует текстовую строку и сохраняет ее в ключе data. Нам остается использовать узлы Move Binary Data и Write Binary File для создания нового XML-файла на сервере. Вот как выглядит конечный результат:

Пример простого экспорта SQL в XML

Шаг 3. Создайте XML-файл с атрибутами

Теперь, когда мы разобрали, как экспортировать SQL в простой XML-файл, давайте погрузимся немного глубже. Рассмотрим, как создавать XML-файлы с атрибутами. Сторонней системе могут понадобиться атрибуты XML, поэтому важно знать, как их создавать в n8n.

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

Во-первых, требуется специальный ключ $ (знак доллара). Он определяет, какие ключи JSON преобразуются в атрибуты XML. Давайте рассмотрим узел Set:

Используйте ключ $ для определения атрибутов XML

В этом примере JSON-ключ Product имеет три дочерних ключа: Name, Line и Scale. У него также есть ключ $ с двумя дочерними ключами: Price и Code. Эти два JSON-ключа станут атрибутами ключа Product.

Для этого в узле XML добавьте еще один параметр Attribute Key и убедитесь, что он имеет то же значение со знаком доллара:

Добавьте опцию Attribute Key в настройках узла XML

После того как вы создали и сохранили новый XML-файл, откройте его в текстовом редакторе. Можно увидеть, что Price и Code теперь являются атрибутами элемента Product, а не отдельными элементами.

Пример XML-файла с атрибутами

Таким образом, используя всего три узла: Set, ItemLists и XML, вы можете определить XML-структуру практически любой сложности и сгенерировать XML-файл. Это позволяет экспортировать данные SQL практически из любого SQL-движка, поддерживаемого n8n.

Как импортировать XML в SQL с помощью n8n?

Мы подробно рассмотрели, как создать XML-файл из базы данных SQL. Но можно поставить и обратную задачу — добавить XML-данные обратно в SQL.

Воспользуемся уже имеющимся XML-файлом и разберемся, как импортировать его в базу данных SQL.

Импорт XML-файла в таблицу SQL тоже достаточно прост

Шаг 1. Получите XML-файл

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

Далее нужно преобразовать двоичные данные в JSON. Это делается в три этапа.

В узле Code есть небольшой JS-скрипт, который считывает буфер двоичных данных и преобразует содержимое XML-файла в строковую переменную:

let binaryDataBufferItem = await this.helpers.getBinaryDataBuffer(0, 'data'); var data = binaryDataBufferItem.toString('utf8') return {"data": data};

Шаг 2. Подготовьте данные XML к импорту

В узле XML выберите режим преобразования XML в JSON.

Узел XML способен преобразовывать JSON в XML, а также XML в JSON

Этот узел поможет нам преобразовать XML в SQL. У него есть несколько полезных опций, но сейчас нас интересует Attribute Key. Выберите эту опцию и активируйте тумблер Merge Attributes. Если у вас есть XML-файл с еще более сложной структурой, вы можете поэкспериментировать с другими опциями, чтобы получить более читабельный результат.

Наконец, перед тем как импортировать данные в SQL, нам нужно разделить элементы массива. В узле ItemLists выберите операцию Split Out Items и введите Products.Product в опции Fields.

XML-файл преобразуется в формат JSON

Полученный результат представляет собой сглаженный JSON-объект, который поможет нам в процессе импорта.

Перед импортом данных давайте создадим новую пустую таблицу с той же структурой, что и таблица Products. В примере уже есть узел SQL, который выполняет два оператора SQL:

CREATE TABLE IF NOT EXISTS new_table AS SELECT * FROM products; TRUNCATE new_table;

  • Первое утверждение не требует пояснений. Создается новая таблица, в которой хранятся все переменные и данные из таблицы Products.
  • Оператор TRUNCATE удаляет все данные из new_table, сохраняя структуру таблицы.

Шаг 3. Импортируйте записи в таблицу SQL

Теперь мы готовы импортировать XML-данные в таблицу SQL. Перейдите к настройкам последнего узла SQL и настройте его:

  • Выберите операцию Insert.
  • Выберите new_table из выпадающего списка.
  • Если ключи JSON точно совпадают с именами переменных SQL, можете выбрать Auto-Map Input Data to Columns. В другом случае используйте ручной выбор и укажите все переменные для импорта.

Переменные могут быть импортированы в SQL автоматически, или их можно выбрать по отдельности

💡 Не забывайте, что база данных SQL может иметь дополнительные ограничения на переменные. Например, допускаются только не пропущенные значения или должны выполняться другие условия. Если процесс импорта по какой-то причине не удался, вы можете найти подробное описание ошибки и соответствующим образом скорректировать процесс импорта.

Как передать XML-файл?

Теперь, когда вы узнали, как экспортировать таблицу SQL в файл XML и преобразовывать XML обратно в таблицу SQL, давайте немного вернемся назад.

До сих пор мы показывали только, как сохранить XML-файл на сервере. Однако вы можете захотеть отправить этот файл дальше. В n8n есть множество способов сделать это:

  1. С помощью узла Send Email вы можете отправить XML-файл старым добрым способом. Это пригодится, если получателю нужно вручную загрузить данные в какую-то систему.
  2. XML-файл можно сохранить на удаленном компьютере с помощью узла FTP.
  3. Если вы используете хранилище S3, вам понадобится специальный узел.
  4. С помощью узла HTTP Request вы можете загрузить XML-файл непосредственно в стороннюю систему.

Как визуализировать XML-файл?

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

Опытные разработчики знают, что XML — это долгоживущий формат, вокруг которого построено несколько вспомогательных технологий. Одна из них называется XSXSLT — язык шаблонов для XML.

И XML, и XSLT являются стандартами W3C. Это значит, что они поддерживаются большинством браузеров. Поэтому вы можете просто передать XML-файл со ссылкой на XSL-шаблон, а браузер сделает все остальное. Показываем пример:

Этот XML доставляется через вебхук n8n. Обратите внимание на вторую строку, которая содержит ссылку на файл шаблона XSL

Вебхук отдает тот же XML-файл, который мы создали в предыдущей части руководства. Единственное отличие — дополнительная ссылка на таблицу стилей XSL.

Если такой XML-файл открыть в браузере, он будет преобразован в красиво оформленную страницу:

Вот как может выглядеть стилизованный XML-файл

Ключевой компонент этого процесса — файл шаблона XSL. Он использует язык стилей для XML, который анализирует элементы XML и отображает их значения на HTML-странице. Так все правила сопоставления уже предоставлены, добавлена ссылка на шаблон bootstrap 5 и готов небольшой JS-сниппет для всплывающих окон.

Вы можете самостоятельно изучить пример рабочего процесса, настроить учетные данные базы данных и URL вебхука. Обратите внимание, что XSL-шаблон будет работать только с базой данных примера. Если у вас другие данные, пожалуйста, обновите XSL-шаблон соответствующим образом. После настройки вы можете ввести этот URL в браузер и получить красиво отформатированную страницу.

Этот сценарий извлекает случайные записи из таблицы SQL, преобразует их в XML и отправляет обратно вместе со ссылкой на XSL-шаблон

Это руководство можно использовать как отправную точку для создания более сложных сценариев:

Зерокодинг, инструментом которого является n8n значительно ускоряет работу и делает ее эффективнее. Он охватывает разные сферы IT и помогает в развитии бизнеса и карьеры.