XML to JSON 변환 방법 총정리 - 온라인 도구부터 코드 변환까지
XML 데이터를 JSON으로 빠르게 변환하는 실전 방법을 정리했습니다. 온라인 도구, Python, JavaScript 코드 예제까지 한번에 확인하세요.
![]()
API 연동 작업을 하다 보면 상대방이 보내주는 데이터가 XML 형식인 경우가 아직도 많습니다. 특히 공공데이터 포털이나 레거시 시스템에서 받는 응답은 대부분 XML입니다. 그런데 프론트엔드에서 다루기엔 JSON이 훨씬 편하죠. XML to JSON 변환 방법을 제대로 알아두면 이런 상황에서 시간을 크게 절약할 수 있습니다.
XML과 JSON의 차이점
XML to JSON 변환을 제대로 하려면 두 포맷의 구조적 차이를 먼저 이해해야 합니다. 겉보기엔 비슷해 보여도 데이터를 표현하는 방식이 근본적으로 다릅니다.
| 항목 | XML | JSON |
|---|---|---|
| 기본 구조 | 태그 기반 트리 구조 | 키-값 쌍 객체 구조 |
| 데이터 타입 | 모든 값이 문자열 | 문자열, 숫자, 불리언, 배열, null 지원 |
| 속성(Attribute) | 태그에 속성 추가 가능 | 속성 개념 없음 (키-값으로 표현) |
| 배열 표현 | 같은 이름의 태그 반복 | 대괄호 []로 명시적 표현 |
| 파일 크기 | 상대적으로 큼 (태그 중복) | 30-50% 더 작음 |
| 파싱 속도 | DOM 파싱 필요 (느림) | JSON.parse()로 즉시 파싱 (빠름) |
| 주석 지원 | 지원 | 미지원 |
JSON이 가볍고 파싱이 빠르다는 점은 확실한 장점입니다. 실제로 동일한 데이터를 표현할 때 JSON은 XML 대비 평균 30-50% 정도 용량이 작습니다. REST API의 95% 이상이 JSON을 기본 응답 포맷으로 사용하는 이유이기도 합니다.
XML to JSON 변환이 필요한 경우
모든 XML을 JSON으로 바꿔야 하는 건 아닙니다. 하지만 다음과 같은 상황에서는 변환이 거의 필수입니다.
- 공공데이터 API 연동 - 한국 공공데이터포털(data.go.kr)의 많은 API가 여전히 XML 형식으로 응답합니다. 프론트엔드에서 바로 활용하려면 JSON 변환이 필요합니다.
- 레거시 시스템 마이그레이션 - SOAP 기반 웹서비스나 오래된 ERP 시스템의 데이터를 현대적인 REST API로 전환할 때 XML to JSON 변환은 첫 번째 단계입니다.
- 설정 파일 통합 - Maven의 pom.xml, Android의 manifest.xml 등 설정 파일을 JSON 기반 도구와 연동해야 할 때 활용됩니다.
- 데이터 분석 전처리 - Python pandas나 JavaScript 라이브러리로 데이터를 분석하려면 JSON 형태가 훨씬 다루기 쉽습니다.
핵심: XML to JSON 변환의 가장 큰 이유는 개발 생산성입니다. JSON은 JavaScript 객체와 1:1 대응되기 때문에 프론트엔드에서 별도 파싱 없이 바로 사용할 수 있습니다. 변환 한 번이 이후 수십 줄의 파싱 코드를 없애줍니다.
온라인 XML to JSON 변환 도구 비교
간단한 변환이라면 코드를 작성할 필요 없이 온라인 도구로 충분합니다. 대표적인 XML to JSON 변환 도구 3가지를 비교해 보겠습니다.
1. Code Beautify XML to JSON Converter
가장 널리 사용되는 온라인 변환기입니다. 왼쪽에 XML을 붙여넣으면 오른쪽에 JSON 결과가 즉시 표시됩니다. 파일 업로드와 URL 직접 입력도 지원합니다.
2. ConvertJSON.com
XML뿐 아니라 CSV, YAML 등 다양한 포맷 간 변환을 지원합니다. 속성(Attribute) 처리 옵션을 세밀하게 설정할 수 있어서 복잡한 XML 구조에 적합합니다.
3. FreeFormatter.com
변환 결과를 바로 검증(Validate)할 수 있는 기능이 내장되어 있습니다. 변환 후 JSON이 문법적으로 올바른지 확인할 때 유용합니다.
이처럼 웹 기반 유틸리티 도구들은 일상적인 작업 효율을 높여줍니다. 데이터 변환 외에도 랜덤 숫자 생성기 같은 도구는 테스트 데이터를 만들 때 유용하게 쓸 수 있습니다.
코드로 직접 XML to JSON 변환하기
반복적인 변환이나 자동화가 필요하다면 코드로 처리하는 게 효율적입니다. Python과 JavaScript 두 가지 방법을 소개합니다.
Python - xmltodict 라이브러리
Python에서 가장 간단한 XML to JSON 변환 방법은 xmltodict 라이브러리입니다. 설치 후 3줄이면 변환이 끝납니다.
- 설치: pip install xmltodict
- 변환 코드: xmltodict.parse()로 XML 문자열을 OrderedDict로 변환한 뒤 json.dumps()로 JSON 문자열로 출력
- 옵션: attr_prefix 파라미터로 XML 속성의 접두사를 변경 가능 (기본값 @)
10MB 이하의 XML 파일이라면 이 방법으로 충분합니다. 그 이상의 대용량 파일은 lxml의 iterparse를 사용해 스트리밍 방식으로 처리하는 것이 메모리 효율적입니다.
JavaScript - xml2js 또는 fast-xml-parser
Node.js 환경에서는 fast-xml-parser를 추천합니다. xml2js보다 파싱 속도가 평균 2-3배 빠르고, 설정 옵션도 더 직관적입니다.
- 설치: npm install fast-xml-parser
- 핵심 옵션: ignoreAttributes(속성 무시 여부), attributeNamePrefix(속성 접두사), isArray(배열 강제 변환 태그 지정)
- 브라우저 지원: CDN으로 불러와 브라우저에서도 사용 가능
변환 시 흔한 오류와 해결법
XML to JSON 변환이 항상 매끄럽게 진행되는 건 아닙니다. 자주 발생하는 문제 5가지와 해결 방법을 정리했습니다.
| 오류 유형 | 원인 | 해결 방법 |
|---|---|---|
| 속성 데이터 손실 | JSON에는 속성 개념이 없어 변환 시 누락됨 | 속성을 별도 키(@attr 또는 _attr)로 매핑하는 옵션 활성화 |
| 단일 요소 배열 문제 | 자식이 1개면 객체, 2개 이상이면 배열로 변환 | isArray 옵션으로 항상 배열로 처리할 태그 지정 |
| 네임스페이스 충돌 | XML 네임스페이스가 JSON 키에 포함되어 접근 어려움 | removeNSPrefix 옵션으로 네임스페이스 제거 |
| 숫자/불리언 타입 변환 | XML은 모든 값이 문자열이라 타입 불일치 발생 | parseNodeValue 옵션으로 자동 타입 추론 활성화 |
| CDATA 섹션 처리 | CDATA 내용이 무시되거나 잘못 파싱됨 | cdataPropName 옵션으로 CDATA 전용 키 지정 |
이 중 가장 빈번하게 발생하는 건 단일 요소 배열 문제입니다. 예를 들어 상품 목록 XML에서 상품이 1개만 있으면 객체로 파싱되고, 2개 이상이면 배열로 파싱됩니다. 프론트엔드에서 .map()을 사용하다가 에러가 나는 전형적인 원인입니다.
실무에서 바로 쓰는 변환 팁
XML to JSON 변환을 실무에서 안정적으로 운용하기 위한 팁을 정리했습니다.
변환 결과 검증 자동화
변환 후 반드시 JSON Schema로 결과를 검증하세요. ajv(JavaScript)나 jsonschema(Python) 라이브러리를 사용하면 변환 결과가 기대한 구조와 일치하는지 자동으로 확인할 수 있습니다. CI/CD 파이프라인에 검증 단계를 넣으면 더 안전합니다.
대용량 XML 처리 전략
100MB 이상의 XML 파일은 한 번에 메모리에 올리면 안 됩니다. SAX 파서나 스트리밍 파서를 사용해 필요한 부분만 순차적으로 변환하세요. Python의 경우 lxml.etree.iterparse, Node.js에서는 sax 또는 saxophone 라이브러리가 이 용도에 적합합니다.
변환 스크립트 재사용 구조
프로젝트마다 XML 구조가 다르므로, 변환 설정을 별도 JSON 파일로 분리해두면 재사용성이 높아집니다. 어떤 태그를 배열로 처리할지, 어떤 속성을 무시할지 등의 설정을 코드와 분리하세요.
개발 작업 중에는 데이터 변환 외에도 다양한 유틸리티가 필요할 때가 있습니다. 코드 실행 시간을 측정해야 할 때는 온라인 스톱워치를 활용하면 별도 타이머 코드를 작성하지 않아도 간편하게 확인할 수 있습니다.
XML to JSON 변환은 한 번 익혀두면 계속 써먹는 기술입니다. 지금 당장 해야 할 일은 딱 두 가지입니다. 첫째, 간단한 변환은 온라인 도구를 북마크해두고 바로 사용하세요. 둘째, 반복 작업이 있다면 fast-xml-parser나 xmltodict로 변환 스크립트를 하나 만들어두세요. 한 번 만들어두면 이후 모든 XML 연동 작업이 훨씬 빨라집니다.