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 замість кастомного парсера на регулярних виразах, тож некоректний 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><column>, цей інструмент не сплощує довільну вкладеність — він очікує один рівень елементів рядків, кожен з яких містить прості елементи стовпців.

Чому DOMParser, а не саморобний зчитувач XML

XML має реальні структурні правила — вкладені елементи, взяття атрибутів у лапки, екранування символів для &, <, > тощо — які швидкий парсер на регулярних виразах схильний тонко переплутати на будь-чому складнішому за найпростіший вхід. Використання вбудованого API браузера DOMParser означає, що цей інструмент покладається на той самий сумісний зі стандартами рушій XML, який сам браузер використовує для рендерингу XML-документів, а не переписує розбір XML з нуля. Це також означає, що некоректний XML — незакритий тег, зайва кутова дужка — проявляється як чітка помилка розбору замість тихого створення пошкодженого чи неповного CSV.

Часті запитання

Чи коректно обробляються значення CSV з комами чи лапками?

Так. Парсер CSV — це належний парсер зі скінченним автоматом, що відстежує, чи перебуває він усередині поля в лапках, тому коми й розриви рядків усередині лапок (наприклад, "Smith, John") та подвоєні лапки, що використовуються для екранування буквального символу лапки, обробляються коректно — він не просто розбиває за кожною комою.

Як розбирається XML — це кастомний парсер на регулярних виразах?

Ні. XML → CSV використовує вбудований у браузер API DOMParser для розбору XML у справжнє дерево документа, так само як браузер розбирає будь-який XML-документ. Це означає, що некоректний XML виявляється й повідомляється як помилка, а не мовчки видає неправильний результат, як це могло б статися з саморобним парсером на регулярних виразах.

Що відбувається з назвами стовпців, які не є валідними тегами XML?

Усе, що не є літерою, цифрою, підкресленням, дефісом чи крапкою, замінюється на підкреслення, а провідне підкреслення додається, якщо назва інакше починалася б з цифри чи розділового знаку — оскільки назви елементів XML не можуть починатися з числа чи містити пробіли так, як це може заголовок CSV.

Чи завантажуються мої дані на сервер?

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

Чи поверне конвертація CSV → XML → CSV точно те, з чого я почав?

Для коректно сформованого CSV з узгодженим набором стовпців — так, зворотний цикл зберігає значення. Якщо ваш початковий CSV мав неузгоджені стовпці в різних рядках чи незвичні символи в назвах заголовків, очищені назви тегів означають, що точне написання заголовка може не зберегтися ідеально, хоча значення даних збережуться.

Схожі інструменти