CSV → XML 변환기

CSV/TSV 데이터를 붙여넣으면 각 행을 하나의 레코드로 하는 XML(값... 형식)로 변환합니다.

CSV→XML 변환이란

표 형식의 데이터를 XML로 다루어야 하는 장면은 지금도 남아 있습니다. 오래된 업무 시스템의 반입 사양, 장표 엔진의 입력, 일부 API 등입니다. 이 도구는 CSV나 TSV를 붙여 넣기만 하면 각 행을 한 건의 레코드로 하는 XML로 변환합니다. 출력은 `<열이름>값...`라는 단순한 구조여서 그대로 XSLT나 파서에 넘길 수 있습니다.

첫 번째 행을 헤더로 읽고 각 열의 제목을 태그 이름으로 사용합니다. 다만 XML의 태그 이름에는 제약이 있기 때문에, **숫자로 시작하거나 빈 문자열이거나 사용할 수 없는 문자를 포함한 제목은 `column1`, `column2` 같은 일련번호로 자동으로 바뀝니다.** 값에 포함된 `&` `<` `>`는 실체 참조로 이스케이프합니다. 처리는 모두 브라우저 안에서 완결되므로 고객 정보처럼 밖으로 내보내고 싶지 않은 데이터도 다룰 수 있습니다.

CSV를 XML로 변환하는 순서

  1. CSV 또는 TSV를 붙여 넣습니다 첫 행을 제목, 두 번째 행 이후를 데이터로 읽습니다. 탭 구분에도 대응합니다.
  2. 태그 이름을 확인합니다 제목이 그대로 태그 이름이 됩니다. 한국어 제목은 태그 이름으로 쓸 수 없어 일련번호로 바뀌는 점에 주의해 주세요.
  3. 생성된 XML을 확인합니다 ``를 최상위로 하여 각 행이 ``로 나열됩니다.
  4. 복사해서 다음 처리로 넘깁니다 XSLT를 이용한 정형이나, XML을 받는 시스템의 입력으로 그대로 쓸 수 있습니다.

더 잘 활용하기 위한 팁

  • "첫 번째 줄을 헤더로 처리"를 활성화하면 헤더 행의 열 이름이 그대로 XML 태그 이름으로 사용됩니다(숫자로 시작하거나 기호를 포함하는 등 XML 태그 이름으로 사용할 수 없는 헤더는 `column1`, `column2`... 로 자동 대체됩니다).
  • 헤더를 사용하지 않으면 모든 행이 데이터 행으로 처리되며, 각 열은 `column1`, `column2`... 라는 태그 이름이 됩니다.
  • 레거시 XML 기반 API, SOAP 연동, 일부 업무 시스템으로의 데이터 반입 등 CSV가 아닌 XML 형식이 필요한 상황에서 활용하세요.
  • 생성된 XML은 문자 개체 참조(&amp;, &lt;, &gt;)로 특수 문자를 안전하게 이스케이프하므로 그대로 외부 시스템에 반입할 수 있습니다.

이럴 때 쓸 수 있습니다

XML 입력만 받는 시스템에 반입할 때

스프레드시트로 만든 데이터를 XML을 요구하는 기간계 시스템에 넘길 수 있는 형태로 정리할 수 있습니다.

장표 엔진의 데이터 소스를 만들 때

많은 장표 엔진이 XML을 데이터 소스로 받습니다. CSV에서 빠르게 시제품을 만들 수 있습니다.

XSLT 연습용 데이터를 준비할 때

변환 스타일시트를 작성할 때 손에 있는 표에서 곧바로 샘플 XML을 마련할 수 있습니다.

데이터 구조를 눈으로 확인할 때

열과 값의 대응을 XML의 중첩으로 보면, CSV 그대로일 때보다 구조를 파악하기 쉬워지는 경우가 있습니다.

CSV→XML 변환 용어

태그 이름의 제약
XML의 태그 이름은 문자 또는 밑줄로 시작해야 하며 공백이나 많은 기호를 포함할 수 없습니다. **이 제약에 맞지 않는 제목은 `column1` 같은 이름으로 자동으로 바뀝니다.**
실체 참조
`&` `<` `>`를 `&` `<` `>`로 바꿔 쓰는 처리입니다. **`&`를 가장 먼저 변환하지 않으면 이중 이스케이프가 됩니다.**
row 요소
한 행분의 데이터를 나타내는 요소입니다. 이 도구는 `` 안에 ``를 나열하는 구조로 출력합니다.
TSV
탭으로 구분된 표 형식 데이터입니다. 스프레드시트에서 복사해 붙여 넣으면 대개 이 형식이 됩니다.
헤더 행
첫 번째 행에 적힌 열 제목입니다. 이것이 태그 이름의 바탕이 되므로 영숫자와 밑줄만으로 적어 두면 변환 후에도 읽기 쉬워집니다.

자주 묻는 질문

SOAP 기반 웹 서비스나 오랫동안 운영되어 온 업무 시스템·기간 시스템 중 다수는 JSON이 보급되기 이전부터 XML을 표준 데이터 형식으로 채택해 왔으며, 지금도 XML 형식의 데이터 연동을 전제로 하고 있습니다. 그래서 이러한 시스템과 연동할 때 CSV를 XML로 변환해야 하는 실무 수요가 여전히 존재합니다.

XML 태그 이름에는 "숫자로 시작할 수 없다", "특정 기호를 포함할 수 없다" 등의 명명 규칙이 있습니다. 헤더 이름이 이 규칙을 위반하는 경우(예: 숫자로 시작하는 열 이름, 공백이나 기호를 포함하는 열 이름) 올바른 XML로 해석할 수 없게 되므로, 이 도구에서는 자동으로 `column1`, `column2`... 와 같은 안전한 태그 이름으로 대체합니다.

모두 동일한 CSV 파싱 로직을 사용하지만 출력 형식이 다릅니다. JSON·SQL·Markdown·HTML·XML 등 연동 대상 시스템이나 용도에 맞는 출력 형식을 선택할 수 있도록 CSV 변환 시리즈로 여러 도구를 제공하고 있습니다.

이 도구는 &, <, > 등 XML 특수 문자를 자동으로 문자 개체 참조(&amp;, &lt;, &gt;)로 이스케이프한 후 출력하므로, 셀 값에 이러한 문자가 포함되어 있어도 올바르게 파싱 가능한 XML로 생성됩니다.
툴군

여담 ― XML이 "장황하다"고 불리게 된 이유

XML(Extensible Markup Language)은 1998년 W3C에서 표준화되었으며, 2000년대 초반 웹 업계에서 "시스템 간 데이터를 주고받기 위한 표준 형식"으로서 압도적인 지위를 구축하고 있었습니다. SOAP·XML-RPC 등의 통신 규격, RSS·Atom 피드 배포, 나아가 설정 파일(Maven의 pom.xml 등)에 이르기까지 다양한 곳에서 XML이 채택되었습니다.

그러나 동일한 데이터를 표현할 때 XML은 태그로 시작과 종료를 매번 명시해야 하기 때문에, JSON(2000년대 중반 이후 보급)에 비해 데이터 용량이 커지기 쉬워 "장황하다(verbose)"는 평가를 받게 되었습니다. 예를 들어 `{"name":"Alice"}`라는 JSON에 대응하는 XML은 <name>Alice</name>처럼 태그 자체의 문자 수가 데이터보다 많아지는 경우도 드물지 않습니다.

그럼에도 XML에는 "XML Schema를 통한 엄격한 타입·구조 검증", "네임스페이스를 통한 충돌 회피", "XSLT를 통한 변환 처리" 등 JSON에는 없는 성숙한 사양들이 있습니다. 지금도 금융·의료·행정 등 미션 크리티컬한 시스템 간 연동에서 XML이 계속 선택되는 것은 이 검증·변환 생태계의 충실도가 이유 중 하나로 꼽힙니다.