XML은 아직 살아 있다 — 어디서 쓰이고 JSON과 뭐가 다른가
"요즘 누가 XML 써?"라고들 하지만 — 오늘 연 엑셀 파일 안에도, 구독 중인 블로그의 RSS에도, 이 사이트의 사이트맵에도 XML이 있습니다. JSON의 시대에 XML이 여전히 살아 있는 곳들과, 둘을 오가는 법을 정리합니다.
XML의 구조 — 태그로 감싸기
XML은 HTML의 사촌입니다. 데이터를 여는 태그와 닫는 태그로 감쌉니다.
<tool>
<name>도구상자</name>
<free>true</free>
</tool>
- HTML과 달리 태그 이름을 마음대로 정의합니다 — 데이터에 맞는 이름표를 붙이는 형식입니다.
- 태그에 속성(
<tool id="1">)을 달 수 있고, 주석·스키마 검증 등 문서 지향 기능이 풍부합니다.
JSON에 자리를 내준 이유
- 장황함 — 같은 데이터를 표현해도 닫는 태그 반복 때문에 XML이 훨씬 깁니다.
- 자바스크립트 궁합 — JSON은 웹 브라우저의 언어인 자바스크립트의 객체 표기 그 자체라, 웹 API에서 변환 비용이 없습니다.
- 그래서 "기계끼리 주고받는 가벼운 데이터"는 JSON이 표준이 됐고, XML은 "문서에 가까운 데이터"의 영역에 남았습니다.
아직 XML인 곳들
- 오피스 파일 — xlsx·docx·pptx의 내부는 XML 묶음(zip)입니다.
- RSS 피드 — 블로그·팟캐스트 구독의 표준 형식.
- 사이트맵 — 검색엔진에 제출하는 sitemap.xml. 이 사이트에도 있습니다.
- SVG — 웹의 벡터 이미지가 통째로 XML 문서입니다.
- 안드로이드 레이아웃·설정 파일, 그리고 국내 공공데이터 API의 상당수가 XML 응답을 줍니다.
JSON과 서로 변환하기
- XML(또는 JSON)을 변환 도구에 붙여 넣습니다.
- 변환 방향을 골라 실행합니다 — 태그 구조가 키-값 구조로(또는 반대로) 바뀝니다.
- XML 속성은 JSON에서
@접두사 키가 되는 등 표기 규칙이 있으니 결과 구조를 한 번 확인하세요. - 코드에서 쓸 타입이 필요하면 JSON → 타입 변환으로 이어 가면 됩니다.
둘 다 구조화된 데이터를 글자로 표현하는 형식이지만 문법이 다릅니다. XML은 HTML처럼 여는 태그와 닫는 태그로 데이터를 감싸고(<name>도구상자</name>), JSON은 중괄호와 따옴표로 표현합니다("name": "도구상자"). 같은 내용이면 XML이 태그 반복 때문에 더 길고, JSON이 더 간결해 현대 웹 API의 표준이 됐습니다. 대신 XML에는 속성·주석·스키마 검증 같은 문서 지향 기능이 풍부합니다.
생각보다 많습니다. 엑셀(xlsx)·워드(docx) 파일은 내부가 XML 묶음이고, 블로그 구독에 쓰이는 RSS 피드, 검색엔진에 제출하는 사이트맵(sitemap.xml), 안드로이드 앱의 화면 레이아웃, 웹의 벡터 이미지(SVG)가 모두 XML입니다. 국내 공공데이터 API도 XML 응답을 주는 곳이 많아, 개발하다 보면 XML을 JSON으로 바꿔야 하는 순간을 반드시 만나게 됩니다.
변환 도구에 붙여 넣으면 됩니다. JSON ↔ XML 변환기는 태그 구조를 키-값 구조로 자동 변환해 주며 그 반대도 가능합니다. 다만 두 형식의 개념이 1:1로 같지는 않아서, XML의 속성(attribute)이 JSON에서 @ 접두사가 붙은 키가 되는 등의 표기 규칙이 생깁니다. 변환 후 구조를 한 번 확인하고, 코드에서 쓸 타입까지 필요하면 JSON → 타입 변환으로 이어 가면 됩니다.