Преобразовать XML в CSV

Работает на вашем устройстве · Ваш файл никогда не покидает устройство.

Перетащите файл XML с повторяющимися записями — <records><record>…</record>…</records>, RSS-ленту, выгрузку из базы — и получите CSV с одной строкой на запись. Документ читает XML-разбор браузера, а затем автоматически находится самый длинный список повторяющихся элементов, во что бы он ни был обёрнут — будь то атрибут на обёртке или собственные заголовок и ссылка ленты рядом с её элементами, — и строка под результатом называет использованный список.

Каждая запись разворачивается так же, как в инструменте «JSON в CSV»: вложенные элементы становятся столбцами через точку (address.city), атрибуты — столбцами с префиксом @ (@id), повторяющиеся внутренние элементы со своими потомками получают нумерованные столбцы (line.0.sku), повторяющиеся текстовые элементы соединяются точкой с запятой (a;b), а строка заголовков — объединение всех найденных столбцов. Значения записываются ровно так, как в XML. Поля с запятыми, кавычками и переносами строк берутся в кавычки по RFC 4180.

CSV в UTF-8 с необязательной меткой BOM для Excel, разделитель выбираете вы, первые 200 строк можно просмотреть до скачивания. Ничего не загружается на сервер.

Как Преобразовать XML в CSV

  1. Перетащите файл XML или вставьте XML в поле.
  2. Выберите разделитель для результата и нужна ли метка BOM для Excel.
  3. Нажмите «Преобразовать в CSV» и просмотрите результат.
  4. Скачайте .csv.

Поддерживаемые форматы и ограничения

Вход
XML (.xml) — файл или вставленный текст, в объявленной в нём кодировке
Выход
CSV, RFC 4180, UTF-8, необязательный BOM
Строки
Самый длинный список повторяющихся элементов
Вложенность
Дочерние элементы → столбцы через точку; атрибуты → столбцы с @
Где работает
В браузере — без загрузки на сервер

Не подходит для: Документов с несколькими списками записей — строками становится только самый длинный; чтобы взять другой, преобразуйте файл в JSON, скопируйте нужный список и преобразуйте его инструментом «JSON в CSV».

Как находятся строки

Строки — это самый длинный список повторяющихся элементов где угодно под корнем, во что бы он ни был обёрнут. <records count="2"><record>…</record><record>…</record></records> даёт по строке на каждый <record>, хотя у обёртки есть атрибут. RSS-лента даёт по строке на каждый <item> со столбцами вроде title, link и pubDate, хотя собственные title и link канала стоят рядом с элементами. Строка под результатом называет использованный список, например rss.channel.item.

Значения рядом с этим списком, вроде собственного заголовка ленты, не относятся ни к одной записи и пропускаются. Если в документе несколько списков записей, строками становится только самый длинный. Чтобы взять другой, преобразуйте файл в /xml-to-json, скопируйте этот список от [ до ], вставьте в /json-to-csv и преобразуйте.

Файл с одной записью

Если повторяющегося элемента нет, единственная запись и становится строкой, а столбцы — это её собственные имена полей: <records><record><name>Анна</name><city>Казань</city></record></records> даёт столбцы name и city. Поэтому файл, в котором иногда одна запись, а иногда много, сохраняет тот же заголовок — это важно, когда другая программа читает столбцы по имени.

Как записываются значения

Значения записываются ровно так, как в XML: 1.50 остаётся 1.50, TRUE — TRUE, элемент с NULL даёт текст NULL, а пустой элемент — пустую ячейку. 007 сохраняет нули, а даты остаются как написаны. Перед значением, которое начинается с =, +, - или @, ставится апостроф, как в /json-to-csv, чтобы табличная программа не выполнила его как формулу.

Повторяющиеся дочерние элементы, в которых только текст, соединяются точкой с запятой в одной ячейке, так что два элемента <tag> дают a;b. Повторяющиеся дочерние элементы со своими потомками получают нумерованные столбцы, например line.0.sku и line.1.sku. Префиксы пространств имён остаются в именах столбцов, как в soap:Body.price. Текст, стоящий рядом с дочерними элементами, попадает в столбец #text, и его место среди них не сохраняется. Файл читается в кодировке, объявленной в его первой строке.

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

Мои файлы загружаются на сервер?
Нет. Преобразование целиком выполняется в вашем браузере, силами вашего же устройства. Файл не покидает компьютер или телефон, а инструмент, которым вы уже один раз воспользовались, работает и без интернета.
Как он понимает, какие элементы — строки?
Берёт самый длинный список повторяющихся элементов под корнем — так <records><record>…</record></records> даёт по строке на каждый <record>, а RSS-лента — по строке на каждый <item>. Значения рядом с этим списком, например собственный заголовок ленты, пропускаются. Если повторяющихся элементов нет, единственная запись становится одной строкой, а её имена полей — столбцами.
Куда попадают атрибуты?
В столбцы с префиксом @: <record id="3"> даёт столбец @id. Текст рядом с дочерними элементами попадает в столбец #text.
Excel откроет файл правильно?
Да. Переключатель «Добавить BOM для Excel» (включён по умолчанию) записывает метку, по которой Excel распознаёт UTF-8, и кириллица с символами отображаются правильно.

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

Ещё в разделе Таблицы и данные

Эта страница на других языках: English · العربية · Deutsch · Français · Español · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা