CSV 파일을 열거나 붙여넣으면 올바른 형식(well-formed)의 XML을 얻습니다. 루트 요소 하나, 레코드마다 행 요소 하나가 있고, 각 값은 하위 요소나 속성이 됩니다. Order ID나 2024 total처럼 XML 이름으로 쓸 수 없는 머리글은 이름을 바꾸고, 바꾼 내용을 모두 목록으로 보여 줍니다. 파일은 업로드되지 않고 브라우저 안에서 변환됩니다.
CSV를 XML로 변환하는 방법
- 파일 열기를 누르거나,
.csv,.tsv,.txt파일을 도구 위에 끌어다 놓거나, 붙여넣기를 고르세요. 열이 이상하게 보이면 가져오기 설정에서 구분 기호와 인코딩을 확인하세요. - 받는 시스템이 기대하는 이름에 맞춰 루트 요소와 행 요소(기본값
rows,row)의 이름을 정하세요. - 값 표현 방식, 빈 값 처리, 들여쓰기, 선언 여부를 정한 다음 복사나 XML 다운로드를 누르세요.
파일을 읽을 시스템이 특정 태그 이름을 요구한다면, 자동으로 이름을 바꿀 필요가 없도록 먼저 CSV 열 매핑으로 CSV 열 이름을 바꾸세요.
옵션별 동작
| 하위 요소 | 기본값입니다: <row><Customer>Smith & Sons</Customer>…</row>. 값 안의 줄 바꿈을 유지하며 대부분의 가져오기 도구에 맞습니다. |
|---|---|
| 속성 | 행마다 자체 닫힘 요소 하나를 씁니다: <row Customer="Smith & Sons" …/>. 간결하며, 값 안의 탭과 줄 바꿈은 파서가 유지하도록 	, , 으로 씁니다. |
| 빈 값 생략 | 기본으로 꺼져 있어 빈 셀은 <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/>가 됩니다.
Order ID,Customer,Total (EUR),Ship date 10071,"Smith & Sons",249.00,2025-02-03 10072,"Café <Lumière>",18.50,
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<Order_ID>10071</Order_ID>
<Customer>Smith & Sons</Customer>
<Total__EUR_>249.00</Total__EUR_>
<Ship_date>2025-02-03</Ship_date>
</row>
<row>
<Order_ID>10072</Order_ID>
<Customer>Café <Lumière></Customer>
<Total__EUR_>18.50</Total__EUR_>
<Ship_date/>
</row>
</rows>자주 묻는 질문
열 이름이 왜 바뀌었나요?
XML 요소 이름에는 공백이나 대부분의 문장 부호를 쓸 수 없고, 숫자나 xml로 시작할 수도 없습니다. 변환기는 유효하고 고유한 이름이 되도록 최소한만 바꾸고, 바꾼 내용을 하나하나 보여 줍니다.
하위 요소와 속성 중 무엇을 써야 하나요?
받는 시스템이 속성을 요구하지 않는다면 하위 요소를 쓰세요. 요소는 줄 바꿈을 적힌 그대로 유지하지만, 속성 값은 XML 파서가 공백을 정규화합니다. 그래서 변환기는 탭과 줄 바꿈을 문자 참조로 씁니다.
숫자나 날짜에 유형이 붙나요?
아니요. XML에는 기본 값 유형이 없으므로 모든 값을 CSV의 텍스트 그대로 씁니다. 유형은 스키마나 파일을 읽는 프로그램이 정합니다.