Конвертировать XML в Excel
Превратите XML-выгрузки, фиды и файлы данных в оформленный лист Excel — повторяющиеся записи найдутся сами, атрибуты и вложенные элементы разложатся по столбцам, и ничего не сохраняется.
- Не сохраняется
- Без очереди и ожидания
- Без регистрации и водяных знаков
Как это работает
Добавьте XML
Перетащите файл .xml или вставьте XML. Файлы Excel в формате XML Spreadsheet 2003 тоже подходят.
Выберите записи
Повторяющийся элемент — product, item, row — выбирается автоматически; все остальные таблицы файла перечислены рядом, а предпросмотр обновляется вживую.
Скачайте
Файл .xlsx, где у каждого столбца свой тип для чисел и дат, а строка заголовков выделена жирным и поддерживает фильтры.
Как найти строки в дереве
В XML нет понятия таблицы, поэтому сначала нужно определить, какие элементы являются записями. Надёжный признак — повторение: родительский элемент со множеством дочерних элементов с одинаковым именем почти всегда означает список записей, а их собственные дочерние элементы и атрибуты становятся столбцами. Это работает для подавляющего большинства XML с данными — выгрузок, фидов, ответов API, дампов конфигурации, — потому что все они устроены одинаково.
И атрибуты, и дочерние элементы превращаются в столбцы. Без этого не обойтись: в XML одно и то же можно записать двумя способами, и разные системы выбирают по-разному. Одна выгрузка пишет id="42" как атрибут, другая — <id>42</id> как элемент, третья делает и то и другое в одном документе. Таблице эта разница безразлична, и вам тоже не должна быть важна, поэтому оба варианта становятся столбцами, а атрибуты помечаются, чтобы одинаковое имя в двух формах не вызывало конфликта.
Вложенность глубже одного уровня разворачивается объединением имён элементов — так же, как во вложенном JSON. Если запись содержит повторяющийся дочерний элемент — три позиции в одном заказе, — таблица не может показать его строками, не дублируя всё вокруг, поэтому повторяющиеся значения остаются в своей ячейке. Пространства имён убираются из названий столбцов, потому что столбец ns2:customerName никому в таблице не поможет, а сами значения не меняются.
В текстовом XML нет таблицы, и конвертируется он плохо. Страница XHTML, статья DocBook, глава ePub или рисунок SVG — это документ, а не набор данных: его структура вложенная и нерегулярная по своей природе, и в нём нет повторяющейся записи, из которой можно собрать строки. Конвертация что-то выдаст, но пользы от этого не будет. Эта страница — для XML с данными, и понимание этой разницы экономит больше времени, чем любая настройка.
Если нужно другое
Если вы знаете структуру, извлекайте данные осознанно, а не полагайтесь на догадки. xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml достаёт ровно нужные поля с помощью выражения XPath, а xq делает то же самое с синтаксисом в стиле jq. В этом и разница между конвертацией, которая сработала по счастливой случайности, и той, которую можно встроить в конвейер.
Для очень больших файлов здесь всё устроено неподходяще: документ целиком разбирается в памяти, а XML, разобранный в дерево, обычно занимает в несколько раз больше места, чем сам файл. Потоковые парсеры — iterparse в Python или SAX в любом языке — обходят документ в несколько гигабайт с постоянным расходом памяти, и после нескольких сотен мегабайт это единственный реальный подход.
Частые вопросы
Как инструмент понимает, какая часть XML — таблица?
Записи — это элементы, которые повторяются внутри одного родителя: каждый <book> в <catalog>, каждый <item> в RSS-канале. Каждая такая группа получает оценку по числу записей и полей, лучшая выбирается, а остальные доступны в один клик.
Что происходит с атрибутами и вложенными элементами?
Каждый становится столбцом, названным по своему пути: атрибут id становится столбцом id, <author><name> — столбцом author/name, а <price currency="EUR"> даёт столбцы price и price/@currency. Поле, которое повторяется внутри одной записи, объединяется в одну ячейку или раскладывается по пронумерованным столбцам.
Можно ли открыть файлы Excel XML Spreadsheet 2003?
Да. Такие файлы распознаются и конвертируются лист за листом, числа, даты и текст сохраняются без изменений.
А если в файле несколько таблиц — например, заказы и их позиции?
Каждая повторяющаяся группа предлагается отдельно. Во вложенной таблице, например в позициях каждого заказа, есть столбец с указанием родительской записи, чтобы два листа можно было сопоставить.
Мой файл где-нибудь сохраняется?
Нет. XML разбирается и книга создаётся прямо здесь, ничего не сохраняется.
Безопасно ли открывать XML из неизвестного источника?
Да. Файл читает XML-парсер вашего браузера, который никогда не загружает внешние сущности и DTD и не может ничего запустить из файла.
Полезно знать: Документы, в которых не данные, а связный текст, — страницы XHTML, статьи DocBook — не содержат таблицы и конвертируются плохо. Файлы больше примерно 100 MB могут не поместиться в память браузера.
Разместите этот инструмент на своём сайте
Бесплатно для любого блога, страницы класса или справочной статьи. Вставьте один фрагмент кода — и посетители смогут пользоваться инструментом прямо на вашей странице.