XML to JSON 변환, 5분 만에 끝내는 방법과 무료 도구 총정리
API 연동이나 데이터 가공 때문에 XML to JSON 변환이 필요하신가요? 온라인 도구부터 파이썬, 자바스크립트 코드까지 상황별 방법을 한번에 정리했습니다.
![]()
오래된 API 문서를 열어보니 응답이 전부 XML 형식이었던 경험, 한 번쯤 있으실 겁니다. 요즘 프로젝트는 대부분 JSON을 쓰는데, 받아온 데이터만 XML이라 어떻게 합쳐야 할지 막막했던 적이 있죠. 정부 공공데이터나 금융권 레거시 시스템, 일부 RSS 피드는 여전히 XML을 고집합니다. 결국 XML to JSON 변환은 피할 수 없는 작업이 됩니다.
다행히 변환 방법은 생각보다 단순합니다. 데이터 양과 작업 환경에 맞는 방법만 고르면 됩니다. 한 번 가공하고 끝나는 일이라면 온라인 도구가 빠르고, 반복 작업이라면 코드 몇 줄이 훨씬 효율적입니다.
XML to JSON 변환이 필요한 순간
왜 굳이 XML을 JSON으로 바꾸는지 먼저 짚고 넘어가겠습니다. 단순히 유행 때문이 아닙니다. 실무에서 마주치는 상황은 대체로 정해져 있습니다.
- 레거시 API 연동: 공공데이터포털, 기상청, 일부 결제 게이트웨이는 XML 응답을 줍니다. 프론트엔드에서 다루려면 JSON이 편합니다.
- 설정 파일 마이그레이션: 예전 자바 기반 시스템의 XML 설정을 최신 Node.js 환경으로 옮길 때 필요합니다.
- 데이터 분석: 파이썬 pandas나 자바스크립트로 데이터를 다룰 때 JSON이 파싱 부담이 적습니다.
JSON은 자바스크립트 객체와 구조가 거의 같아서, 별도 파서 없이 바로 다룰 수 있다는 점이 가장 큰 장점입니다.
XML과 JSON, 무엇이 다를까
변환 전에 두 포맷의 성격을 알아두면 결과물을 이해하기 쉽습니다. 같은 데이터를 표현하는 방식이 다를 뿐, 담는 정보는 동일합니다.
| 구분 | XML | JSON |
|---|---|---|
| 구조 | 태그 기반 (여는 태그/닫는 태그) | 키-값 쌍 (중괄호) |
| 용량 | 상대적으로 큼 | 약 30% 더 가벼움 |
| 속성(attribute) | 지원 | 미지원 (키로 변환 필요) |
| 주석 | 지원 | 미지원 |
| 가독성 | 중첩 깊으면 복잡 | 비교적 간결 |
표에서 보듯 XML의 속성(attribute)과 주석은 JSON에 직접 대응되는 개념이 없습니다. 이 부분이 변환할 때 가장 많이 어긋나는 지점입니다.
XML to JSON 변환의 핵심은 데이터를 옮기는 것이 아니라, XML 고유의 속성과 텍스트 노드를 JSON 구조에 어떻게 매핑할지 결정하는 일입니다. 도구마다 이 규칙이 다릅니다.
무료 온라인 변환 도구
일회성 작업이라면 브라우저에서 바로 처리하는 게 가장 빠릅니다. 설치도 가입도 필요 없습니다. 대표적인 무료 도구들의 특징을 정리했습니다.
대표 온라인 변환기 비교
| 도구 | 특징 | 적합한 경우 |
|---|---|---|
| Code Beautify | 속성 처리 옵션 제공, 파일 업로드 가능 | 구조가 복잡한 XML |
| FreeFormatter | 변환 후 유효성 검사 동시 지원 | JSON 검증까지 필요할 때 |
| ConvertJSON | 대용량 파일 처리 안정적 | 수 MB 단위 데이터 |
참고로 짧은 작업이 끝난 뒤 결과 링크를 동료에게 공유해야 한다면 미투 단축URL 같은 단축 서비스를 쓰면 긴 URL을 깔끔하게 정리할 수 있습니다. 이런 가벼운 웹 유틸리티들은 알아두면 두고두고 쓰입니다. 비슷하게 학생이라면 학점 계산기처럼 목적이 분명한 도구를 즐겨찾기 해두면 시간을 아낄 수 있습니다.
코드로 직접 변환하기
같은 변환을 반복하거나, 데이터를 외부에 노출하면 안 되는 상황이라면 코드가 정답입니다. 환경별로 검증된 라이브러리가 이미 잘 갖춰져 있습니다.
파이썬 (xmltodict)
파이썬에서는 xmltodict 라이브러리가 사실상 표준입니다. pip install xmltodict로 설치한 뒤, 세 줄이면 끝납니다. XML을 딕셔너리로 변환하고, 그 딕셔너리를 json 모듈로 직렬화하는 방식입니다. 속성은 기본적으로 @ 접두사가 붙은 키로 변환됩니다.
자바스크립트 (fast-xml-parser)
Node.js 환경에서는 fast-xml-parser가 속도와 안정성 면에서 가장 많이 쓰입니다. 옵션으로 속성 접두사, 텍스트 노드 이름을 자유롭게 지정할 수 있어 원하는 JSON 구조를 정밀하게 맞출 수 있습니다.
변환할 때 자주 놓치는 부분
도구가 알아서 해줄 것 같지만, 실제로는 다음 세 가지에서 결과가 어긋나는 경우가 많습니다.
- 숫자와 문자열 구분: XML은 모든 값을 문자열로 봅니다.
"123"이 숫자 123으로 자동 변환되길 원한다면 별도 옵션을 켜야 합니다. - 배열 처리: 동일 태그가 1개일 때와 여러 개일 때 구조가 달라집니다. 한 개면 객체, 두 개 이상이면 배열로 변환되어 코드에서 분기 처리가 필요합니다.
- 네임스페이스:
ns:tag형태의 네임스페이스가 키에 그대로 남아 예상치 못한 키 이름이 생길 수 있습니다.
특히 배열 문제는 실무에서 버그로 가장 자주 이어집니다. 데이터가 하나일 때만 테스트하고 배포했다가, 항목이 여러 개로 늘어나면서 코드가 멈추는 사례가 흔합니다.
정리하면, 한 번 쓰고 버릴 변환은 온라인 도구, 반복하거나 민감한 데이터는 코드로 처리하는 것이 기본 원칙입니다. 먼저 본인 데이터에 속성과 배열이 섞여 있는지 확인하고, 그에 맞는 도구를 고르세요. 변환 후에는 반드시 JSON 유효성 검사를 한 번 거쳐 구조가 깨지지 않았는지 점검하는 습관을 들이는 것이 좋습니다.