도구로 바로 가기
ViewCSV
파일을 업로드하지 않습니다

CSV를 XML로 변환

orders.csv· 예시 데이터15행 · 8열
값 표현 방식
<?xml version="1.0" encoding="UTF-8"?>
<rows>
  <row>
    <order_id>001041</order_id>
    <customer>주원 이</customer>
    <city>수원</city>
    <product>USB-C cable</product>
    <quantity>4</quantity>
    <unit_price>242.94</unit_price>
    <order_date>2026-01-11</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001042</order_id>
    <customer>지아 최</customer>
    <city>인천</city>
    <product>Coffee beans 1kg</product>
    <quantity>5</quantity>
    <unit_price>137.62</unit_price>
    <order_date>2026-02-06</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>도윤 정</customer>
    <city>서울</city>
    <product>USB-C cable</product>
    <quantity>4</quantity>
    <unit_price>230.94</unit_price>
    <order_date>2026-03-13</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001044</order_id>
    <customer>하은 최</customer>
    <city>울산</city>
    <product>Chair, ergonomic</product>
    <quantity>8</quantity>
    <unit_price>173.96</unit_price>
    <order_date>2026-04-25</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001045</order_id>
    <customer>민준 이</customer>
    <city>부산</city>
    <product>Chair, ergonomic</product>
    <quantity>1</quantity>
    <unit_price/>
    <order_date>2026-05-25</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001046</order_id>
    <customer>하윤 강</customer>
    <city>울산</city>
    <product>Coffee beans 1kg</product>
    <quantity>2</quantity>
    <unit_price>184.56</unit_price>
    <order_date>2026-06-26</order_date>
    <status>shipped</status>
  </row>
  <row>
    <order_id>001047</order_id>
    <customer> 지아 김 </customer>
    <city>광주</city>
    <product>Coffee beans 1kg</product>
    <quantity>2</quantity>
    <unit_price>216.67</unit_price>
    <order_date>2026-07-26</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001048</order_id>
    <customer>하은 김</customer>
    <city>대구</city>
    <product>Chair, ergonomic</product>
    <quantity>9</quantity>
    <unit_price>53.02</unit_price>
    <order_date>2026-08-27</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001049</order_id>
    <customer>예준 오</customer>
    <city>인천</city>
    <product>Notebook A5</product>
    <quantity>3</quantity>
    <unit_price>99.60</unit_price>
    <order_date>2026-09-20</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001050</order_id>
    <customer>지아 윤</customer>
    <city>부산</city>
    <product>Monitor 27"</product>
    <quantity>4</quantity>
    <unit_price>161.71</unit_price>
    <order_date>2026-01-24</order_date>
    <status>pending</status>
  </row>
  <row>
    <order_id>001051</order_id>
    <customer>하은 정</customer>
    <city>대구</city>
    <product>Notebook A5</product>
    <quantity>9</quantity>
    <unit_price>142.69</unit_price>
    <order_date>2026-02-20</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001052</order_id>
    <customer>지우 한</customer>
    <city>울산</city>
    <product>USB-C cable</product>
    <quantity>1</quantity>
    <unit_price>231.30</unit_price>
    <order_date>2026-03-12</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001053</order_id>
    <customer>도윤 박</customer>
    <city>수원</city>
    <product>Notebook A5</product>
    <quantity>8</quantity>
    <unit_price>244.37</unit_price>
    <order_date>2026-04-20</order_date>
    <status>paid</status>
  </row>
  <row>
    <order_id>001054</order_id>
    <customer>민준 김</customer>
    <city>광주</city>
    <product>Chair, ergonomic</product>
    <quantity>7</quantity>
    <unit_price>62.98</unit_price>
    <order_date>2026-05-05</order_date>
    <status>refunded</status>
  </row>
  <row>
    <order_id>001043</order_id>
    <customer>도윤 정</customer>
    <city>서울</city>
    <product>USB-C cable</product>
    <quantity>4</quantity>
    <unit_price>230.94</unit_price>
    <order_date>2026-03-13</order_date>
    <status>pending</status>
  </row>
</rows>

15행 · 파일 1개

CSV 파일을 열거나 붙여넣으면 올바른 형식(well-formed)의 XML을 얻습니다. 루트 요소 하나, 레코드마다 행 요소 하나가 있고, 각 값은 하위 요소나 속성이 됩니다. Order ID나 2024 total처럼 XML 이름으로 쓸 수 없는 머리글은 이름을 바꾸고, 바꾼 내용을 모두 목록으로 보여 줍니다. 파일은 업로드되지 않고 브라우저 안에서 변환됩니다.

CSV를 XML로 변환하는 방법

  1. 파일 열기를 누르거나, .csv, .tsv, .txt 파일을 도구 위에 끌어다 놓거나, 붙여넣기를 고르세요. 열이 이상하게 보이면 가져오기 설정에서 구분 기호와 인코딩을 확인하세요.
  2. 받는 시스템이 기대하는 이름에 맞춰 루트 요소와 행 요소(기본값 rows, row)의 이름을 정하세요.
  3. 값 표현 방식, 빈 값 처리, 들여쓰기, 선언 여부를 정한 다음 복사나 XML 다운로드를 누르세요.

파일을 읽을 시스템이 특정 태그 이름을 요구한다면, 자동으로 이름을 바꿀 필요가 없도록 먼저 CSV 열 매핑으로 CSV 열 이름을 바꾸세요.

옵션별 동작

하위 요소기본값입니다: <row><Customer>Smith &amp; Sons</Customer>…</row>. 값 안의 줄 바꿈을 유지하며 대부분의 가져오기 도구에 맞습니다.
속성행마다 자체 닫힘 요소 하나를 씁니다: <row Customer="Smith &amp; Sons" …/>. 간결하며, 값 안의 탭과 줄 바꿈은 파서가 유지하도록 &#9;, &#10;, &#13;으로 씁니다.
빈 값 생략기본으로 꺼져 있어 빈 셀은 <Ship_date/> 같은 빈 요소가 됩니다. 켜면 그 행에서 해당 요소나 속성을 뺍니다.
들여쓰기공백 2칸(기본값), 공백 4칸, 또는 문서 전체를 한 줄로 쓰는 없음(최소화) 중에서 고릅니다.
XML 선언 추가기본으로 켜져 있으며 첫 줄이 <?xml version="1.0" encoding="UTF-8"?>가 됩니다. XML을 다른 문서 안에 넣을 때는 끄세요.

루트 요소와 행 요소의 이름에도 머리글과 같은 이름 규칙을 적용합니다. 비어 있거나 잘못된 이름은 rows나 row로 돌아가거나 앞에 밑줄이 붙습니다.

열 이름이 XML 이름이 되는 방식

  • 공백은 _가 되고, 글자, 숫자, ., -, _가 아닌 문자도 _가 됩니다: Total (EUR) → Total__EUR_, e-mail:work → e-mail_work. 콜론도 바꾸므로 네임스페이스 접두사가 생기지 않습니다.
  • 숫자, ., -로 시작하는 이름에는 앞에 밑줄이 붙습니다(2024 total → _2024_total). XML이 예약해 둔 xml(대소문자 무관)로 시작하는 이름도 마찬가지입니다(xml_ref → _xml_ref).
  • 두 머리글이 같은 이름이 되면 두 번째에 _2가 붙습니다(a b와 a_b → a_b, a_b_2). XML 이름은 대소문자를 구분하므로 Name과 name은 서로 다른 이름으로 남습니다.
  • 어느 문자 체계의 글자든 유지합니다. Größe, 価格, 한글 단가도 유효한 XML 이름입니다. 빈 머리글은 먼저 Column 7이 되었다가 Column_7이 됩니다.
  • 바뀐 이름은 모두 옵션 아래에 old → new 형식으로 나열되고, 미리 보기 위의 안내에 개수가 표시됩니다.

값을 쓰는 방식

  • 요소 텍스트에서는 &, <, >를 이스케이프하고, 속성에서는 "도 이스케이프합니다. 그 밖에는 CSV에 적힌 그대로 씁니다. 00731은 앞자리 0을 유지하며, 유형을 추측하지 않습니다.
  • XML 1.0은 대부분의 제어 문자(탭, 줄 바꿈(LF), 캐리지 리턴을 제외한 U+0000–U+001F), U+FFFE, U+FFFF, 짝이 없는 서로게이트를 이스케이프하더라도 허용하지 않습니다. 이런 문자는 지우고, 영향을 받은 값의 개수를 보여 줍니다.
  • 따옴표 안의 쉼표, 따옴표, 줄 바꿈은 RFC 4180에 따라 읽으며, 줄 바꿈은 하위 요소 안에서 실제 줄 바꿈으로 남습니다.
  • 출력은 항상 UTF-8입니다.

문제 해결

  • 가져오기 도구가 필드를 찾지 못합니다. 이름이 바뀌었을 가능성이 큽니다. 옵션 아래의 목록을 확인하고, CSV의 열 이름을 바꾸거나 받는 시스템의 매핑을 고치세요.
  • 파서가 인코딩 오류를 보고합니다. 가져오기 설정에서 원본 파일의 실제 인코딩(한국어 파일은 대개 EUC-KR(CP949))으로 여세요. CSV를 올바르게 해석해야 XML도 올바른 UTF-8이 됩니다.
  • 모든 값이 요소 하나에 들어갑니다. 구분 기호를 잘못 추측했습니다. 가져오기 설정에서 쉼표, 세미콜론, 탭, 세로 막대 중 하나를 고르세요.
  • CDATA, 네임스페이스, 스키마가 필요합니다. 이 변환기는 일반 요소와 속성만 씁니다. 그런 요소는 다음 단계에서 추가하세요.

한도와 개인정보 보호

25 MB, 10만 행 또는 200만 셀까지의 파일은 처음 200행의 실시간 미리 보기와 함께 열립니다. 더 큰 파일은 스트리밍 방식으로 변환합니다. 파일을 조각 단위로 두 번 읽는데(한 번은 열 파악, 한 번은 쓰기), 다운로드에 파일 전체가 들어간다는 안내가 표시되고 복사는 제공하지 않습니다. 출력 파일 하나는 최대 4 GB입니다.

변환은 이 탭의 백그라운드 워커에서 실행되므로 페이지가 멈추지 않고, 취소로 중단할 수 있습니다. CSV는 서버로 보내지 않습니다.

예시

머리글에 공백과 괄호가 있고, 앰퍼샌드, 꺾쇠괄호, 빈 날짜가 있는 주문 내보내기 파일을 기본 설정으로 변환한 결과입니다. 머리글 세 개의 이름이 바뀌고, 비어 있는 Ship date는 <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>

자주 묻는 질문

열 이름이 왜 바뀌었나요?

XML 요소 이름에는 공백이나 대부분의 문장 부호를 쓸 수 없고, 숫자나 xml로 시작할 수도 없습니다. 변환기는 유효하고 고유한 이름이 되도록 최소한만 바꾸고, 바꾼 내용을 하나하나 보여 줍니다.

하위 요소와 속성 중 무엇을 써야 하나요?

받는 시스템이 속성을 요구하지 않는다면 하위 요소를 쓰세요. 요소는 줄 바꿈을 적힌 그대로 유지하지만, 속성 값은 XML 파서가 공백을 정규화합니다. 그래서 변환기는 탭과 줄 바꿈을 문자 참조로 씁니다.

숫자나 날짜에 유형이 붙나요?

아니요. XML에는 기본 값 유형이 없으므로 모든 값을 CSV의 텍스트 그대로 씁니다. 유형은 스키마나 파일을 읽는 프로그램이 정합니다.

표준 및 참고 자료