Перейти к содержимому
PulsarKit

Конвертировать XML в Excel

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

Перетащите файлы сюда

.xml, .rss, .xhtml, .txt · до 300 МБ

Больше настроек

Как конвертировать

  1. 1

    Перетащите XML-файл

    Ленты, каталоги и выгрузки из систем обрабатываются только локально. Подходят RSS, обычный XML и XHTML.

  2. 2

    Подтвердите найденный элемент записи

    Самый часто повторяющийся путь становится строкой. Переопределите его, если записи в вашем файле вложены нестандартно.

  3. 3

    Конвертируйте и скачайте XLSX

    Вы получаете по одной строке на запись с закрепленным заголовком. Таблицу сразу можно фильтровать и сортировать.

Как определить, что считать строкой

В XML нет понятия таблицы, поэтому главный вопрос — какой элемент считать записью. Дерево документа проходится целиком, и для каждого узла считается количество одноименных дочерних элементов. Побеждает путь с наибольшим числом повторений. Если есть несколько вариантов с одинаковым счетчиком, выбирается более глубокий путь, потому что он конкретнее: rss.channel.item — куда более полезный ответ, чем rss.channel. Этот подход почти всегда правильно срабатывает на лентах и каталогах, но это все равно только эвристика. Поэтому путь выводится в редактируемое поле, а не прячется как внутренняя настройка. Выгрузка из 1С, где повторяются и Document, и TableRow, — тот случай, когда только вы знаете, что считать записью.

Атрибуты, пространства имен и вложенность

Атрибут несет данные так же, как и элемент, поэтому id="7" превращается в столбец с именем @id, а вложенный currency="EUR" — в sum.@currency. При желании измените префикс или полностью исключите атрибуты. Префиксы пространств имен по умолчанию удаляются, чтобы dc:title попал в столбец с именем title — этого обычно и ждут, когда открывают лист. Если отключить эту опцию, префикс в имени останется. Вложенные элементы разворачиваются в столбцы с именами через точку до указанной вами глубины. Все, что глубже, записывается как компактная JSON-строка в одной ячейке, а не раздувает таблицу вширь.

Объявления сущностей отклоняются, а не разворачиваются

XML-файл может объявлять свои сущности внутри DOCTYPE, а их разворачивание — тот самый механизм, которым атака billion laughs съедает память, а XXE читает файлы с сервера. Безопасного способа разворачивать недоверенные сущности нет, а для конвертации в таблицу это и не нужно. Поэтому документ с объявлением ENTITY отклоняется еще до парсинга, с сообщением, в котором прямо сказано, в чем причина. Удалите DOCTYPE, и остальная часть файла будет конвертирована как обычно.

Разбор здесь, а не на сервере

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

Частые вопросы

Как выбирается повторяющийся элемент?

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

Куда попадают атрибуты?

В отдельные столбцы с префиксом @ по умолчанию — например, @id для атрибута записи и sum.@currency для атрибута на вложенном элементе. Префикс можно изменить или полностью отключить атрибуты.

Что происходит с вложенными элементами?

Они превращаются в столбцы с именами через точку, например order.customer.city, до заданной вами глубины. Все, что глубже, записывается как компактная JSON-строка в одну ячейку, а не разносится по новым столбцам.

Что с пространствами имен?

Префиксы вроде dc: по умолчанию убираются, поэтому dc:title становится столбцом с именем title. Если в вашем файле разные пространства имен используют одинаковые локальные имена, отключите удаление префиксов, чтобы не смешивать их.

Работает ли с RSS?

Да, для детектора это самый простой случай: rss.channel.item находится автоматически. Вы получаете по одной строке на запись ленты, с title, link и pubDate в столбцах.

Какой лимит строк?

1 048 576 строк — это ограничение самого формата XLSX. Более длинная лента отклоняется с предложением перейти в конвертер CSV, где такого ограничения нет.

Мой файл загружается на сервер?

Нет. Файл декодируется, разбирается и конвертируется в вашем браузере, а объявленные сущности сразу отклоняются, а не разворачиваются. Поэтому ничего в документе не может инициировать сетевой запрос.

Похожие инструменты

XML в JSONПреобразуйте XML в JSON с атрибутами, CDATA и пространствами имен так, как вам удобно, а ошибки синтаксиса указывают точную строку.XML в CSVПреобразуйте фид, выгрузку товаров или RSS-файл в табличный CSV — повторяющийся элемент записи находится автоматически, XPath не нужен.Excel в CSVЭкспортируйте листы XLSX, XLS и ODS в CSV с нужным разделителем, кодировкой и переводами строк — такими, как требует принимающая система.CSV в ExcelПреобразуйте CSV-выгрузку в полноценную книгу XLSX, которая сразу открывается по столбцам — без мастера импорта, битых букв и пропавших ведущих нулей.Форматер XMLСделайте XML читабельным с отступами, сожмите его в одну строку или только проверьте — комментарии, CDATA и порядок атрибутов сохранятся как есть.Разделить ExcelРазбейте книгу с несколькими листами на отдельные файлы или разрежьте один длинный лист на части по нужному количеству строк.