CodeKitHub
Инструменты JSON

Конвертер CSV в XML

Последнее обновление:

Чтобы преобразовать CSV в XML, каждая строка становится элементом <row>, а каждый столбец — дочерним тегом, названным по имени заголовка — обратное преобразование извлекает один столбец для каждого уникального имени дочернего тега, найденного в XML. Вставьте любой из форматов и выберите нужное направление. Всё выполняется локально, поэтому ваши данные никогда не покидают устройство.

Что это за инструмент?

Некоторые системы (устаревшее корпоративное ПО, определённые API на основе SOAP, каналы, близкие к RSS) ожидают данные в формате XML, в то время как электронные таблицы и большинство инструментов импорта данных ожидают CSV. Этот инструмент перемещает данные между двумя форматами: CSV → XML оборачивает каждую строку в элемент <row> внутри корневого элемента <rows>, а каждый столбец становится дочерним тегом, названным по заголовку; XML → CSV делает обратное — извлекает по одному столбцу для каждого уникального найденного имени дочернего тега.

Сторона CSV разбирается с помощью подходящего парсера полей в кавычках (а не простого разделения по запятым), поэтому значения с запятыми, переносами строк или встроенными кавычками обрабатываются корректно. Сторона XML разбирается с помощью встроенного в браузер API DOMParser — того же интерфейса, который браузеры используют внутренне для разбора XML-документов — а не самодельного парсера на основе регулярных выражений, поэтому вложенные теги и стандартное экранирование XML обрабатываются так же, как это делает настоящий XML-парсер.

Имена столбцов/тегов, которые не являются допустимыми именами элементов XML (содержащие пробелы, начинающиеся с цифры и т. д.), автоматически очищаются при генерации XML, поскольку имена элементов XML подчиняются более строгим правилам, чем заголовки CSV.

Источник: разбор CSV соответствует RFC 4180; структура XML соответствует спецификации W3C XML 1.0.

Зачем его использовать?

  • Работает в обоих направлениях — CSV в XML и XML в CSV, в одном инструменте.
  • Корректный разбор CSV — обрабатывает поля в кавычках с запятыми, переносами строк и экранированными кавычками, а не просто простое разделение по запятым.
  • Разбор XML на основе стандартов — XML → CSV использует встроенный в браузер DOMParser вместо пользовательского regex-парсера, поэтому некорректный XML сообщается как ошибка, а не молча превращается в мусор.
  • Автоматическое экранирование XML — специальные символы вроде & и < в ваших значениях CSV корректно экранируются при генерации XML.
  • 100% на стороне клиента — ничего из того, что вы вставляете сюда, не загружается на сервер.

Как использовать

  1. Вставьте данные CSV (со строкой заголовков) или данные XML в поле.
  2. Нажмите «CSV → XML», чтобы создать XML, или «XML → CSV», чтобы преобразовать XML обратно в таблицу.
  3. Просмотрите результат — скопируйте его или скачайте как файл.
  4. При преобразовании CSV → XML каждая строка становится элементом <row> с одним тегом на столбец, обёрнутым в корневой элемент <rows>.

Пример

Ввод

name,age
Alice,30
Bob,25

Результат

<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <name>Alice</name>
    <age>30</age>
  </row>
  <row>
    <name>Bob</name>
    <age>25</age>
  </row>
</rows>

Каждая строка CSV становится элементом <row>, а каждый столбец — дочерним тегом, названным по заголовку — повторный прогон этого XML через «XML → CSV» восстанавливает исходную таблицу из двух столбцов.

Практические советы

  • Передача данных в устаревшую систему или SOAP API, ожидающую XML: сначала конвертируйте здесь экспорт CSV, затем вставьте полученный XML прямо в целевую систему.
  • Проверка полученного экспорта XML: запустите XML → CSV, чтобы быстро получить читаемое табличное представление без необходимости полноценного XML-редактора.
  • Если ваш XML использует глубоко вложенные элементы вместо плоской структуры <row><столбец>, этот инструмент не будет разворачивать произвольную вложенность — он ожидает один уровень элементов строк, каждый из которых содержит простые элементы столбцов.

Почему DOMParser, а не самодельный XML-ридер

У XML есть настоящие структурные правила — вложенные элементы, кавычки атрибутов, экранирование символов для &, <, > и так далее — которые быстрый regex-парсер обычно немного неверно обрабатывает на всём, кроме самого простого ввода. Использование встроенного в браузер API DOMParser означает, что этот инструмент опирается на тот же соответствующий стандартам XML-движок, который сам браузер использует для отображения XML-документов, вместо того чтобы заново реализовывать разбор XML с нуля. Это также означает, что некорректный XML — незакрытый тег, случайный угловой символ — проявляется как явная ошибка разбора, а не молча создаёт повреждённый или неполный CSV.

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

Корректно ли обрабатываются значения CSV с запятыми или кавычками?

Да. Парсер CSV — это настоящий парсер на основе конечного автомата, который отслеживает, находится ли он внутри поля в кавычках, поэтому запятые и переносы строк внутри кавычек (например, «Smith, John»), а также удвоенные кавычки, используемые для экранирования буквального символа кавычки, обрабатываются корректно — он не просто разделяет по каждой запятой.

Как разбирается XML — это пользовательский regex-парсер?

Нет. XML → CSV использует встроенный в браузер API DOMParser для разбора XML в настоящее дерево документа, точно так же, как браузер разбирает любой XML-документ. Это означает, что некорректный XML обнаруживается и сообщается как ошибка, а не молча создаёт неверный результат, как это может сделать самодельный regex-парсер.

Что происходит с именами столбцов, которые не являются допустимыми тегами XML?

Всё, что не является буквой, цифрой, подчёркиванием, дефисом или точкой, заменяется на подчёркивание, а если имя иначе начиналось бы с цифры или пунктуации, добавляется начальное подчёркивание — поскольку имена элементов XML не могут начинаться с числа или содержать пробелы, в отличие от заголовка CSV.

Загружаются ли мои данные на сервер?

Нет. Оба направления конвертации выполняются полностью на JavaScript в вашем браузере с использованием собственного движка разбора XML браузера — ничего никуда не отправляется, что делает безопасным использование с экспортированными бизнес- или клиентскими данными.

Даст ли преобразование CSV → XML → CSV точно то, с чего я начал?

Для правильно оформленного CSV с согласованным набором столбцов — да, обратное преобразование сохраняет значения. Если в исходном CSV столбцы были несогласованы по строкам или в именах заголовков были необычные символы, очищенные имена тегов означают, что точное написание заголовка может быть сохранено не идеально, хотя значения данных сохранятся.

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