CSV → XML 변환기
CSV/TSV 데이터를 붙여넣으면 각 행을 하나의 레코드로 하는 XML(
CSV→XML 변환이란
표 형식의 데이터를 XML로 다루어야 하는 장면은 지금도 남아 있습니다. 오래된 업무 시스템의 반입 사양, 장표 엔진의 입력, 일부 API 등입니다. 이 도구는 CSV나 TSV를 붙여 넣기만 하면 각 행을 한 건의 레코드로 하는 XML로 변환합니다. 출력은 `
첫 번째 행을 헤더로 읽고 각 열의 제목을 태그 이름으로 사용합니다. 다만 XML의 태그 이름에는 제약이 있기 때문에, **숫자로 시작하거나 빈 문자열이거나 사용할 수 없는 문자를 포함한 제목은 `column1`, `column2` 같은 일련번호로 자동으로 바뀝니다.** 값에 포함된 `&` `<` `>`는 실체 참조로 이스케이프합니다. 처리는 모두 브라우저 안에서 완결되므로 고객 정보처럼 밖으로 내보내고 싶지 않은 데이터도 다룰 수 있습니다.
CSV를 XML로 변환하는 순서
- CSV 또는 TSV를 붙여 넣습니다 첫 행을 제목, 두 번째 행 이후를 데이터로 읽습니다. 탭 구분에도 대응합니다.
- 태그 이름을 확인합니다 제목이 그대로 태그 이름이 됩니다. 한국어 제목은 태그 이름으로 쓸 수 없어 일련번호로 바뀌는 점에 주의해 주세요.
-
생성된 XML을 확인합니다
`
`를 최상위로 하여 각 행이 ` `로 나열됩니다.
- 복사해서 다음 처리로 넘깁니다 XSLT를 이용한 정형이나, XML을 받는 시스템의 입력으로 그대로 쓸 수 있습니다.
더 잘 활용하기 위한 팁
- "첫 번째 줄을 헤더로 처리"를 활성화하면 헤더 행의 열 이름이 그대로 XML 태그 이름으로 사용됩니다(숫자로 시작하거나 기호를 포함하는 등 XML 태그 이름으로 사용할 수 없는 헤더는 `column1`, `column2`... 로 자동 대체됩니다).
- 헤더를 사용하지 않으면 모든 행이 데이터 행으로 처리되며, 각 열은 `column1`, `column2`... 라는 태그 이름이 됩니다.
- 레거시 XML 기반 API, SOAP 연동, 일부 업무 시스템으로의 데이터 반입 등 CSV가 아닌 XML 형식이 필요한 상황에서 활용하세요.
- 생성된 XML은 문자 개체 참조(
&,<,>)로 특수 문자를 안전하게 이스케이프하므로 그대로 외부 시스템에 반입할 수 있습니다.
이럴 때 쓸 수 있습니다
XML 입력만 받는 시스템에 반입할 때
스프레드시트로 만든 데이터를 XML을 요구하는 기간계 시스템에 넘길 수 있는 형태로 정리할 수 있습니다.
장표 엔진의 데이터 소스를 만들 때
많은 장표 엔진이 XML을 데이터 소스로 받습니다. CSV에서 빠르게 시제품을 만들 수 있습니다.
XSLT 연습용 데이터를 준비할 때
변환 스타일시트를 작성할 때 손에 있는 표에서 곧바로 샘플 XML을 마련할 수 있습니다.
데이터 구조를 눈으로 확인할 때
열과 값의 대응을 XML의 중첩으로 보면, CSV 그대로일 때보다 구조를 파악하기 쉬워지는 경우가 있습니다.
CSV→XML 변환 용어
- 태그 이름의 제약
- XML의 태그 이름은 문자 또는 밑줄로 시작해야 하며 공백이나 많은 기호를 포함할 수 없습니다. **이 제약에 맞지 않는 제목은 `column1` 같은 이름으로 자동으로 바뀝니다.**
- 실체 참조
- `&` `<` `>`를 `&` `<` `>`로 바꿔 쓰는 처리입니다. **`&`를 가장 먼저 변환하지 않으면 이중 이스케이프가 됩니다.**
- row 요소
- 한 행분의 데이터를 나타내는 요소입니다. 이 도구는 `
` 안에 ` `를 나열하는 구조로 출력합니다.
- TSV
- 탭으로 구분된 표 형식 데이터입니다. 스프레드시트에서 복사해 붙여 넣으면 대개 이 형식이 됩니다.
- 헤더 행
- 첫 번째 행에 적힌 열 제목입니다. 이것이 태그 이름의 바탕이 되므로 영숫자와 밑줄만으로 적어 두면 변환 후에도 읽기 쉬워집니다.
자주 묻는 질문
&, <, > 등 XML 특수 문자를 자동으로 문자 개체 참조(&, <, >)로 이스케이프한 후 출력하므로, 셀 값에 이러한 문자가 포함되어 있어도 올바르게 파싱 가능한 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이 계속 선택되는 것은 이 검증·변환 생태계의 충실도가 이유 중 하나로 꼽힙니다.