Przejdź do narzędzia
ViewCSV
Plik nie jest nigdzie wysyłany

Konwertuj CSV do XML

orders.csv· DANE PRZYKŁADOWE15 wierszy · 8 kolumn
Zapisz wartości jako
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <order_id>001041</order_id>
    <customer>Nikodem Kamiński</customer>
    <city>Poznań</city>
    <product>Desk lamp</product>
    <quantity>7</quantity>
    <unit_price>195.66</unit_price>
    <order_date>2026-01-06</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001042</order_id>
    <customer>Antoni Szymański</customer>
    <city>Wrocław</city>
    <product>Chair, ergonomic</product>
    <quantity>5</quantity>
    <unit_price>106.18</unit_price>
    <order_date>2026-02-07</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Franciszek Kamiński</customer>
    <city>Gdańsk</city>
    <product>USB-C cable</product>
    <quantity>1</quantity>
    <unit_price>142.78</unit_price>
    <order_date>2026-03-19</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001044</order_id>
    <customer>Nikodem Lewandowski</customer>
    <city>Gdańsk</city>
    <product>Coffee beans 1kg</product>
    <quantity>3</quantity>
    <unit_price>155.57</unit_price>
    <order_date>2026-04-26</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001045</order_id>
    <customer>Aleksander Nowak</customer>
    <city>Kraków</city>
    <product>Desk lamp</product>
    <quantity>9</quantity>
    <unit_price/>
    <order_date>2026-05-25</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001046</order_id>
    <customer>Antoni Kowalski</customer>
    <city>Szczecin</city>
    <product>Notebook A5</product>
    <quantity>6</quantity>
    <unit_price>234.47</unit_price>
    <order_date>2026-06-16</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001047</order_id>
    <customer> Maja Kamiński </customer>
    <city>Wrocław</city>
    <product>Coffee beans 1kg</product>
    <quantity>6</quantity>
    <unit_price>239.01</unit_price>
    <order_date>2026-07-02</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001048</order_id>
    <customer>Julia Wójcik</customer>
    <city>Gdańsk</city>
    <product>USB-C cable</product>
    <quantity>8</quantity>
    <unit_price>212.47</unit_price>
    <order_date>2026-08-02</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001049</order_id>
    <customer>Zofia Wójcik</customer>
    <city>Szczecin</city>
    <product>Chair, ergonomic</product>
    <quantity>1</quantity>
    <unit_price>29.67</unit_price>
    <order_date>2026-09-08</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001050</order_id>
    <customer>Aleksander Wójcik</customer>
    <city>Poznań</city>
    <product>Desk lamp</product>
    <quantity>7</quantity>
    <unit_price>61.38</unit_price>
    <order_date>2026-01-17</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001051</order_id>
    <customer>Jakub Nowak</customer>
    <city>Kraków</city>
    <product>Chair, ergonomic</product>
    <quantity>3</quantity>
    <unit_price>76.09</unit_price>
    <order_date>2026-02-20</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001052</order_id>
    <customer>Jan Wójcik</customer>
    <city>Poznań</city>
    <product>Monitor 27"</product>
    <quantity>4</quantity>
    <unit_price>57.81</unit_price>
    <order_date>2026-03-01</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001053</order_id>
    <customer>Alicja Dąbrowski</customer>
    <city>Lublin</city>
    <product>Desk lamp</product>
    <quantity>9</quantity>
    <unit_price>110.39</unit_price>
    <order_date>2026-04-07</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001054</order_id>
    <customer>Hanna Kowalski</customer>
    <city>Wrocław</city>
    <product>Notebook A5</product>
    <quantity>5</quantity>
    <unit_price>36.16</unit_price>
    <order_date>2026-05-11</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>Franciszek Kamiński</customer>
    <city>Gdańsk</city>
    <product>USB-C cable</product>
    <quantity>1</quantity>
    <unit_price>142.78</unit_price>
    <order_date>2026-03-19</order_date>
    <status>pending</status>
  </row>
</rows>

15 wierszy · 1 plik

Otwórz lub wklej plik CSV, a dostaniesz poprawny składniowo XML: element główny, po jednym elemencie wiersza na każdy rekord i każdą wartość jako element podrzędny lub atrybut. Nagłówki, które nie są prawidłowymi nazwami XML, np. Order ID czy 2024 total, otrzymują nowe nazwy, a każda zmiana jest wymieniona. Plik jest konwertowany w Twojej przeglądarce i nigdy nie jest wysyłany na serwer.

Jak przekonwertować CSV do XML

  1. Kliknij Otwórz plik, upuść plik .csv, .tsv lub .txt na narzędzie albo wybierz Wklej. Jeśli kolumny wyglądają nieprawidłowo, sprawdź ogranicznik i kodowanie w sekcji Ustawienia importu.
  2. Nazwij Element główny i Element wiersza (domyślnie rows i row) tak, jak oczekuje system docelowy.
  3. Wybierz Zapisz wartości jako, sposób obsługi pustych wartości, Wcięcia i deklarację, a potem kliknij Kopiuj lub Pobierz XML.

Jeśli system odczytujący plik oczekuje konkretnych nazw znaczników, najpierw zmień nazwy kolumn CSV w narzędziu Mapowanie kolumn CSV, aby automatyczna zmiana nazw nie była potrzebna.

Co robi każda opcja

Elementy podrzędneUstawienie domyślne: <row><Customer>Smith &amp; Sons</Customer>…</row>. Zachowuje podziały wiersza w wartościach i pasuje do większości narzędzi importu.
AtrybutyJeden samozamykający się element na wiersz: <row Customer="Smith &amp; Sons" …/>. Zwięzły zapis; tabulatory i podziały wiersza w wartościach są zapisywane jako &#9;, &#10; i &#13;, aby parser je zachował.
Pomiń puste wartościDomyślnie wyłączone, więc pusta komórka staje się pustym elementem, np. <Ship_date/>. Po włączeniu element lub atrybut jest w danym wierszu pomijany.
Wcięcia2 spacje (domyślnie), 4 spacje lub Bez wcięć (zminifikowany) – wtedy cały dokument mieści się w jednej linii.
Dodaj deklarację XMLDomyślnie włączone: pierwsza linia to <?xml version="1.0" encoding="UTF-8"?>. Wyłącz, gdy XML ma zostać osadzony w innym dokumencie.

Nazwy elementu głównego i elementu wiersza podlegają tym samym regułom co nagłówki; pusta lub nieprawidłowa wartość jest zastępowana przez rows lub row albo dostaje przedrostek z podkreśleniem.

Jak nazwy kolumn stają się nazwami XML

  • Spacje zamieniają się w _, a każdy znak inny niż litery, cyfry, ., - i _ – również w _: Total (EUR) → Total__EUR_, e-mail:work → e-mail_work. Dwukropki są zastępowane, więc nie powstają przedrostki przestrzeni nazw.
  • Nazwa zaczynająca się od cyfry, . lub - dostaje podkreślenie na początku (2024 total → _2024_total); tak samo nazwa zaczynająca się od xml w dowolnej wielkości liter, zarezerwowana w XML (xml_ref → _xml_ref).
  • Jeśli dwa nagłówki dadzą tę samą nazwę, drugi dostaje _2 (a b i a_b → a_b, a_b_2). Nazwy XML rozróżniają wielkość liter, więc Name i name pozostają różne.
  • Litery z dowolnego pisma są zachowywane: Größe i 価格 – podobnie jak polskie Ilość – to prawidłowe nazwy XML. Pusty nagłówek najpierw staje się Column 7, a potem Column_7.
  • Każda zmiana nazwy jest wymieniona pod opcjami w postaci old → new (stara nazwa → nowa nazwa), a komunikat nad podglądem podaje ich liczbę.

Jak zapisywane są wartości

  • W tekście elementów zabezpieczane są znaki &, < i >; w atrybutach dodatkowo ". Poza tym wartości są zapisywane dokładnie tak jak w CSV: 00731 zachowuje zera i żaden typ nie jest zgadywany.
  • XML 1.0 zabrania większości znaków sterujących (U+0000–U+001F poza tabulatorem, znakiem nowego wiersza i powrotem karetki), U+FFFE, U+FFFF i niesparowanych surogatów – nawet w postaci encji. Są one usuwane, a narzędzie podaje liczbę wartości, których to dotyczyło.
  • Przecinki, cudzysłowy i podziały wiersza w cudzysłowie są odczytywane zgodnie z RFC 4180; podział wiersza pozostaje prawdziwym podziałem wewnątrz elementu podrzędnego.
  • Wynik jest zawsze zapisany w UTF-8.

Rozwiązywanie problemów

  • Narzędzie importu nie znajduje pola. Prawdopodobnie zmieniono jego nazwę. Sprawdź listę pod opcjami i zmień nazwę kolumny w CSV albo dostosuj mapowanie w systemie docelowym.
  • Parser zgłasza błąd kodowania. Otwórz plik źródłowy z jego rzeczywistym kodowaniem (np. Windows-1250) w ustawieniach importu; XML jest poprawnym UTF-8 tylko wtedy, gdy CSV został prawidłowo odczytany.
  • Wszystko jest w jednym elemencie. Ogranicznik został źle rozpoznany; w ustawieniach importu wybierz przecinek, średnik, tabulator lub kreskę pionową.
  • Potrzebuję sekcji CDATA, przestrzeni nazw lub schematu. Konwerter zapisuje wyłącznie zwykłe elementy i atrybuty; takie elementy dodaj w kolejnym kroku.

Limity i prywatność

Pliki do 25 MB, 100 000 wierszy lub 2 mln komórek otwierają się z podglądem pierwszych 200 wierszy na żywo. Większe pliki są konwertowane strumieniowo: plik jest odczytywany dwukrotnie we fragmentach (raz, aby zmierzyć kolumny, i drugi raz, aby zapisać wynik), komunikat informuje, że pobrany plik obejmuje całość, a przycisk Kopiuj nie jest dostępny. Pojedynczy plik wynikowy może mieć najwyżej 4 GB.

Konwersja odbywa się w tle w tej karcie, więc strona cały czas reaguje, a Anuluj przerywa pracę. Plik CSV nigdy nie jest wysyłany na serwer.

Przykład

Eksport zamówień ze spacjami i nawiasami w nagłówkach, znakiem &, nawiasami ostrymi i pustą datą, przekonwertowany z ustawieniami domyślnymi. Trzy nagłówki dostają nowe nazwy, a pusta wartość Ship date staje się <Ship_date/>.

CSV
Order ID,Customer,Total (EUR),Ship date
10071,"Smith & Sons",249.00,2025-02-03
10072,"Café <Lumière>",18.50,
XML
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <Order_ID>10071</Order_ID>
    <Customer>Smith &amp; Sons</Customer>
    <Total__EUR_>249.00</Total__EUR_>
    <Ship_date>2025-02-03</Ship_date>
  </row>
  <row>
    <Order_ID>10072</Order_ID>
    <Customer>Café &lt;Lumière&gt;</Customer>
    <Total__EUR_>18.50</Total__EUR_>
    <Ship_date/>
  </row>
</rows>

Pytania i odpowiedzi

Dlaczego nazwa mojej kolumny została zmieniona?

Nazwy elementów XML nie mogą zawierać spacji ani większości znaków interpunkcyjnych, nie mogą zaczynać się od cyfry ani od xml. Konwerter wprowadza najmniejszą zmianę, która daje prawidłową i unikatową nazwę, i wymienia każdą z nich.

Używać elementów czy atrybutów?

Używaj elementów podrzędnych, chyba że system docelowy wymaga atrybutów. Elementy zachowują podziały wiersza w zapisanej postaci; w wartościach atrybutów parsery XML normalizują białe znaki, dlatego konwerter zapisuje tabulatory i podziały wiersza jako odwołania do znaków.

Czy liczby i daty dostają typy?

Nie. XML nie ma wbudowanych typów wartości, więc każda wartość jest zapisywana jako tekst z CSV. Typy określa schemat albo program, który odczytuje plik.

Standardy i źródła