XML을 JSON으로

무료 온라인 XML to JSON 도구. 브라우저 DOMParser로 XML을 파싱하여 표준 JSON 객체로 자동 변환합니다. XML 속성은 필드로 직접 매핑되고, 중복 요소는 자동으로 배열로 병합되며, 요소 텍스트는 value 필드에 저장됩니다. JSON과 YAML 이중 형식 출력, prettyPrint 포맷팅, XML 오류 자동 수정을 지원하며 모든 처리는 브라우저 로컬에서 이루어집니다.

관련 추천

XML to JSON: XML 데이터를 표준 JSON 객체로 자동 변환

XML to JSON은 XML(eXtensible Markup Language) 형식의 데이터(SOAP 메시지, RSS 구독, 설정 파일)를 JSON(JavaScript Object Notation) 객체로 변환하는 과정입니다. XML은 엔터프라이즈 시스템, SOAP Web Service, 설정 파일, Office 문서의 전통적인 데이터 형식이며, JSON은 현대 Web API, JavaScript, NoSQL 데이터베이스의 사실상 표준입니다. 두 형식은 각자 장점이 있습니다: XML은 엄격하게 자기 기술적이며 네임스페이스와 schema 검증을 폭넓게 지원하고, JSON은 간결하고 파싱이 쉬우며 JavaScript에 자연스럽게 적합합니다. 개발 과정에서 XML 메시지를 JSON으로 변환하여 현대 프론트엔드나 마이크로서비스에서 사용해야 하는 경우가 많은데, 본 도구는 이 과정을 자동화하기 위해 만들어졌습니다.

본 도구의 핵심은 브라우저 네이티브 DOMParser로 XML을 파싱하고 DOM 트리를 자동 순회하여 JSON 객체를 생성하는 것입니다. DOMParser는 브라우저에 내장된 XML 파서로 W3C DOM 표준을 준수하며 XML 네임스페이스, CDATA, 주석, 속성 등 모든 XML 1.0 기능을 지원합니다. DOM 기반 파싱의 장점은 제로 의존성, 우수한 성능, 표준 준수입니다.

변환 매핑 규칙은 매우 직관적입니다: 각 XML 요소는 JSON 객체로 변환되고, 요소의 속성은 객체의 필드로 직접 변환되며(@ 접두사를 사용하지 않아 흔한 혼란스러운 명명 규칙을 피함), 요소의 텍스트 내용은 value 필드에 저장되고, 동일한 이름의 중복 요소는 자동으로 배열로 병합됩니다. 예를 들어 <bookstore><book id="1"><title>Great Gatsby</title></book><book id="2"><title>Brief History</title></book></bookstore>는 {bookstore: {book: [{id: "1", title: {value: "Great Gatsby"}}, {id: "2", title: {value: "Brief History"}}]}}로 변환됩니다.

속성 매핑에 접두사 없는 직접 매핑 방식을 사용한 것은 본 도구의 핵심 설계 선택입니다. 많은 XML 변환 도구는 속성과 텍스트를 구분하기 위해 @attribute, #text 등 특수 접두사를 사용하는데, 이는 정확하지만 생성되는 JSON 구조가 다소 이상하여 JavaScript에서 직접 사용하기 어렵습니다. 본 도구의 속성 직접 매핑은 생성되는 JSON을 실제 비즈니스 데이터 모델에 더 가깝게 만들어, 개발자가 TypeScript interface에 직접 대응 타입을 정의할 수 있습니다.

중복 요소의 배열화는 XML to JSON의 또 다른 핵심 설계입니다. XML에는 배열 개념이 없으므로 반복 요소(예: 여러 <item>)로 목록 데이터를 표현합니다. 본 도구는 동일한 부모 요소 아래의 동일한 이름의 중복 태그를 자동 감지하여 배열로 병합하므로 JSON의 목록 의미론에 부합하며 데이터 유실이나 수동 병합이 필요 없습니다.

이중 형식 출력(JSON + YAML)은 본 도구의 차별화된 설계입니다. YAML은 또 다른 인기 있는 데이터 직렬화 형식으로 Kubernetes, Docker Compose, Ansible, GitHub Actions 등 구성 파일 시나리오에서 널리 사용됩니다. 도구에 내장된 간이 YAML 변환기는 표준 2칸 공백 들여쓰기, 목록 접두사 -, 키-값 쌍 : 구분자를 지원합니다. JSON/YAML 전환 버튼을 클릭하면 두 형식 간에 실시간으로 전환할 수 있습니다.

XML 오류 자동 수정(tryFixXML)은 도구의 내결함성을 높입니다. 현실에서 사용자가 입력하는 XML에는 XML 선언(<?xml version="1.0"?>)이 누락되거나, 자체 닫기 태그(예: <br>, <img>)가 XML 스타일의 <br />이 아닌 HTML 스타일의 <br>로 사용되는 경우가 자주 있습니다. 도구는 XML 선언을 자동 추가하고 자체 닫기 태그의 /를 보완하여, 보다 많은 형식 오류가 있는 XML이 DOMParser에서 올바르게 파싱되도록 합니다.

XML 포맷팅과 압축(formatXML/compressXML)은 xml-formatter 라이브러리를 기반으로 합니다. prettyPrint 모드는 2칸 공백 들여쓰기와 줄바꿈이 유지된 읽기 쉬운 XML을 출력하고, 압축 모드는 공백 없이 한 줄로 된 컴팩트한 XML을 출력하여 네트워크 전송에 적합합니다. 개발자는 도구로 XML을 직접 압축하여 데이터베이스에 저장할 수 있으며 30-50%의 스토리지 공간을 절약할 수 있습니다.

실시간 자동 변환은 도구의 실용적인 기능입니다. XML 입력 후 500ms 디바운스로 자동 변환이 실행되며, 6개 키보드 단축키(macOS ⇧⌘+F/C/T/O/D/K)와 함께 포맷팅, 압축, 변환, 업로드, 다운로드, 지우기 등 자주 쓰는 작업을 마우스 클릭 없이 빠르게 완료할 수 있습니다.

순수 브라우저 로컬 처리는 본 도구의 핵심 아키텍처입니다. 모든 XML 파싱, DOM 순회, JSON 직렬화, YAML 변환이 브라우저 JavaScript에서 실행되며, DOMParser는 브라우저가 네이티브로 제공하고(XML 파싱 라이브러리를 번들할 필요 없음), xml-formatter는 경량 npm 패키지(30KB 미만)입니다. 원본 XML 데이터는 서버에 업로드되지 않으므로 민감한 SOAP 메시지(주문 정보, 사용자 데이터 포함)를 로컬에서 안전하게 처리할 수 있습니다.

사용 사례

  • 결제 게이트웨이, ERP, CRM 등 XML 응답만 반환하는 레거시 엔터프라이즈 API를 연동할 때 XML 메시지를 빠르게 JSON으로 변환하여 현대 프론트엔드나 Node.js 백엔드에서 사용.
  • RSS / Atom 구독 피드를 JSON으로 파싱하여 웹 프론트엔드에 표시하거나 통합 피드 리더에 집계하거나 데이터베이스에 임포트.
  • Spring, Tomcat, Apache 등 Java 애플리케이션의 XML 설정 파일(web.xml, applicationContext.xml)을 읽어 JSON으로 변환한 후 jq로 쿼리하거나 다른 도구에 임포트.
  • SOAP 1.1/1.2 프로토콜의 XML 응답을 JSON으로 변환하여 Node.js의 jsonwebtoken, lodash 등 라이브러리와 함께 후속 처리.
  • Maven의 pom.xml, Ant의 build.xml 등 빌드 스크립트를 JSON으로 파싱하여 프로젝트 메타데이터 시각화, 의존성 분석 등에 활용.
  • RSS feed, Sitemap XML, Atom 구독 피드를 JSON 형식으로 변환하여 Elasticsearch, MongoDB 등 현대 데이터베이스에 저장.
  • 의료, 금융 업계의 HL7, ISO 20022 등 XML 기반 산업 표준 데이터 형식을 연동할 때 XML 메시지를 JSON으로 변환하여 현대 마이크로서비스에서 처리.
  • Google Merchant Center, Sitemap.org 등 SEO 관련 XML 파일(sitemap.xml, robots.xml)을 JSON으로 변환하여 크롤러나 분석 도구에서 사용.

이용 방법

  1. 왼쪽 입력창에 XML 내용을 붙여넣거나, '업로드' 버튼을 클릭하여 .xml/.txt 파일을 선택하거나, '예시'를 클릭하여 내장된 bookstore 예시를 로드합니다.
  2. 도구가 자동으로 변환합니다(입력 후 500ms 디바운스). 오른쪽에서 변환된 JSON 또는 YAML을 확인하며 CodeMirror 문법 하이라이팅으로 읽기 쉽습니다.
  3. 오른쪽 툴바의 JSON / YAML 버튼을 클릭하여 출력 형식을 실시간으로 전환합니다. '포맷팅'(⇧⌘+F) 또는 '압축'(⇧⌘+C) 버튼으로 XML 입력의 형식을 조정할 수도 있습니다.
  4. '복사'를 클릭하여 JSON/YAML을 클립보드에 복사하거나, '다운로드'를 클릭하여 해당 확장자의 파일(output.json / output.yaml / output.xml)로 저장합니다.
  5. XML 구문 오류를 수정해야 하는 경우 오류 메시지 옆의 '수정' 버튼(또는 툴바의 '예시' 옆 드롭다운 메뉴)을 클릭하면, 도구가 tryFixXML을 호출하여 XML 선언을 자동 추가하고 자체 닫기 태그를 보완합니다.
  6. JSON을 대상 코드(TypeScript interface 정의, API 응답 타입 등)에 붙여넣거나 백엔드 서비스로 가져와 추가 처리합니다.

주요 기능

  • 스마트 DOM 트리 파싱: 브라우저 네이티브 DOMParser로 XML을 파싱하고 노드 트리를 자동 순회하여 표준 JSON 객체를 생성, 제로 의존성.
  • 속성 직접 매핑: XML 속성(예: id="1", category="fiction")이 JSON 객체의 일반 필드로 직접 변환, @ 접두사 불필요.
  • 중복 요소 배열화: 동일한 이름의 중복 XML 요소를 자동으로 JSON 배열로 병합({book: [{...}, {...}]}), 일반적인 데이터 구조 규칙에 부합.
  • 텍스트 노드 추출: 요소 텍스트 내용이 자동으로 value 필드에 저장되며, 속성 및 자식 요소와 나란히 보존.
  • 이중 형식 출력: 원클릭으로 JSON(prettyPrint 2칸 공백 들여쓰기)과 YAML(2칸 공백 들여쓰기, 목록 접두사 -) 간 전환, 다양한 애플리케이션 시나리오에 대응.
  • XML 오류 자동 수정: 내장된 tryFixXML 복구 함수가 누락된 XML 선언을 자동 추가하고 br/hr/img 등 자체 닫기 태그를 보완.
  • XML 포맷팅/압축: xml-formatter 라이브러리를 사용하여 prettyPrint 예쁜 출력과 minify 압축 출력 지원(2칸 공백 들여쓰기 또는 공백 없음).
  • 실시간 자동 변환: XML 입력 후 500ms 디바운스로 자동 변환, 수동 클릭 불필요, 출력이 실시간 동기화 갱신.
  • JSON/XML 이중 하이라이트: 왼쪽은 CodeMirror XML 문법 하이라이팅, 오른쪽은 형식에 따라 JSON 또는 YAML 하이라이팅 전환.
  • 완전한 단축키 체계: 6개 자주 쓰는 단축키(포맷/압축/변환/업로드/다운로드/지우기), macOS와 Windows/Linux 지원.
  • 복사 및 다운로드: 원클릭으로 클립보드에 복사하거나 표준 output.json/output.yaml/output.xml 파일로 다운로드(현재 형식에 따라 확장자 자동 선택).
  • 순수 브라우저 로컬 처리: 모든 XML 파싱, DOM 순회, JSON 직렬화가 브라우저 JavaScript에서 완료되며 원본 데이터는 업로드되지 않고, DOMParser는 브라우저가 네이티브로 제공.

자주 묻는 질문

XML을 JSON 형식으로 변환하려면 어떻게 해야 하나요?

XML 내용을 왼쪽 입력창에 붙여넣으면, 도구가 브라우저 네이티브 DOMParser로 XML을 파싱하여 DOM 트리를 표준 JSON 객체로 자동 변환합니다. 루트 노드는 { [tagName]: {...} }로 래핑되고, 속성은 일반 필드로 매핑되며(@ 접두사 없음), 요소 텍스트는 value 필드에 저장되고, 동일한 이름의 중복 요소는 자동으로 배열로 병합됩니다. 입력 후 500ms 뒤 자동으로 변환되므로 수동으로 클릭할 필요가 없습니다.

XML의 속성과 텍스트 노드는 어떻게 변환되나요?

본 도구는 직관적인 매핑 방식을 사용합니다: XML 속성은 JSON 객체의 일반 필드로 직접 매핑되며(예: <book id="1">은 {id: "1", ...}로 변환), @ 접두사를 사용하지 않습니다. 요소의 텍스트 내용은 value 필드에 저장됩니다(예: <title>Great Gatsby</title>은 {value: "Great Gatsby"}로 변환). 속성과 텍스트가 공존할 경우 둘은 동일한 객체 내에 나란히 배치됩니다.

XML에서 동일한 이름의 중복 요소가 여러 개 있으면 자동으로 JSON 배열이 되나요?

네. 도구는 동일한 부모 요소 아래의 중복된 태그(예: <bookstore> 아래의 3개 <book>)를 자동으로 감지하여 JSON 배열로 병합합니다. 예를 들어 <bookstore><book>...</book><book>...</book></bookstore>는 {bookstore: {book: [{...}, {...}]}}로 변환됩니다. 이 규칙은 XML 처리에서 가장 흔한 데이터 구조에 부합합니다.

순수 텍스트 노드는 어떻게 처리되나요?

XML 요소에 속성이 없고 텍스트 내용만 있을 경우, 도구는 텍스트 문자열을 직접 반환합니다(예: <name>Alice</name>은 "Alice"로 변환). 요소에 속성과 텍스트가 모두 있을 경우 속성과 텍스트가 동일한 객체 내에 나란히 배치됩니다({attr: "...", value: "..."}). 요소에 자식 요소가 있을 경우 자식 요소는 객체 필드가 되고 텍스트 내용은 value 필드로 병합됩니다.

닫는 태그 누락 등 형식이 올바르지 않은 XML도 변환할 수 있나요?

네. 도구에 내장된 tryFixXML 복구 함수가 누락된 XML 선언(<?xml version="1.0" encoding="UTF-8"?>)을 자동으로 추가하고, br, hr, img 등 흔한 자체 닫기 태그에 /를 자동으로 보완합니다. 이 설계로 구형 시스템이나 형식이 맞지 않는 서드파티 인터페이스와의 호환성이 크게 향상됩니다.

어떤 XML 파일 형식을 지원하나요?

.xml 및 .txt 파일(UTF-8 인코딩)을 지원합니다. '업로드' 버튼을 클릭하여 로컬 파일을 선택하면 브라우저 네이티브 FileReader API로 읽어들이며, 서버에 업로드되지 않습니다. 업로드 성공 후 내용이 자동으로 입력창에 채워지고 자동 변환이 실행됩니다.

JSON과 YAML을 동시에 출력할 수 있나요?

네. 도구는 JSON과 YAML 이중 형식 출력을 지원합니다. 오른쪽 툴바의 JSON/YAML 전환 버튼을 클릭하면 출력 형식을 실시간으로 전환할 수 있습니다. JSON 형식은 2칸 공백 들여쓰기의 prettyPrint가 적용되며, YAML 형식은 표준 2칸 공백 들여쓰기, 목록 접두사 -, 키-값 쌍 : 구분자를 사용하여 Kubernetes, Docker Compose, Ansible 등 구성 파일 시나리오에 바로 사용할 수 있습니다.

다운로드 파일 이름은 무엇인가요?

현재 출력 형식에 따라 확장자가 자동으로 선택됩니다: JSON 형식 선택 시 output.json, YAML 형식 선택 시 output.yaml로 다운로드되며, 입력만 하고 변환하지 않은 경우 output.xml(원본 형식 유지)로 다운로드됩니다. 모든 파일은 UTF-8 인코딩으로 해당 형식의 파서가 직접 읽을 수 있습니다.

키보드 단축키는 무엇이 있나요?

도구는 다음 단축키를 지원합니다: macOS 사용자는 ⇧⌘+F 포맷팅, ⇧⌘+C 압축, ⇧⌘+T 변환, ⇧⌘+O 업로드, ⇧⌘+D 다운로드, ⇧⌘+K 지우기; Windows/Linux 사용자는 ⌘ 대신 Ctrl을 사용합니다. 총 6개 단축키가 전체 워크플로를 커버합니다.

XML 네임스페이스(namespace)를 지원하나요?

본 도구는 DOMParser 기반으로 XML을 파싱하므로 XML 네임스페이스(xmlns)를 네이티브로 지원합니다. 네임스페이스 접두사는 요소 이름의 일부로 JSON에 보존됩니다. 예를 들어 <svg:circle>은 {svg:circle: {...}}로 변환됩니다. 네임스페이스를 넘나드는 요소에 접근하려면 JSON 파싱 측에서 네임스페이스 접두사를 통해 식별해야 합니다.

CDATA 섹션을 지원하나요?

네. CDATA 섹션(<![CDATA[...]]>)의 내용은 DOMParser가 자동으로 요소의 textContent에 병합하므로, 도구는 일반 텍스트 노드처럼 처리하여 JSON의 value 필드로 추출합니다. 다만 CDATA는 XML 노드 타입이지 문자열이 아니므로 원래 CDATA와 일반 텍스트는 JSON 출력에서 구분할 수 없습니다.

어떤 크기의 입력 파일을 지원하나요?

이론상 하드한 제한은 없으며 브라우저 메모리에 의존합니다. 일반적으로 1-2MB 이내의 XML은 원활하게 처리할 수 있습니다. 더 큰 파일은 DOMParser의 메모리 사용량이 커서 느려질 수 있습니다. 대용량 SOAP 메시지나 RSS feed 처리 시 지연이 발생하면 로컬 XML 에디터에서 먼저 정리하거나 분할하는 것을 권장합니다.

문제 해결

JSON 파싱 시 'unclosed token' 오류가 발생합니다

원인은 보통 XML의 닫는 태그 누락, 속성 따옴표 쌍이 맞지 않음, 또는 특수 문자가 이스케이프되지 않은 것입니다. 오류 메시지 옆의 '수정' 버튼을 클릭하여 tryFixXML을 호출하면 XML 선언을 자동 추가하고 자체 닫기 태그를 보완합니다. 그래도 파싱되지 않으면 XML 구조를 수동으로 확인하거나 브라우저 개발자 도구에서 document.documentElement.outerHTML로 파싱 결과를 확인하세요.

속성 순서가 JSON에서 XML과 일치하지 않습니다

JSON 표준은 속성 순서를 보장하지 않지만, 도구는 요소 속성의 소스 코드 순서대로 매핑합니다. 비즈니스에서 순서가 중요한 경우 파싱 후 JSON에서 Lodash의 toPairs 등 유사한 도구를 사용하여 순서 있는 배열로 재구성할 수 있습니다. 다만 대부분의 JavaScript 엔진(V8, SpiderMonkey)은 삽입 순서대로 문자열 키를 보존합니다.

동일한 이름의 요소가 하나뿐일 때 배열이 되지 않는데 어떻게 해야 하나요?

도구는 현재 동일한 이름의 중복 요소가 감지될 때만 배열로 변환합니다. 동일한 이름의 요소가 하나뿐이면 단일 객체로 유지됩니다. 강제로 배열화해야 하는 경우(요소가 1개뿐이어도) 변환 후 lodash의 castArray로 래핑하거나: [result].flat()을 사용하거나 JSON Schema 검증으로 강제 배열화할 수 있습니다.

XML 속성의 특수 문자(<, & 등)를 어떻게 보존하나요?

DOMParser가 속성값을 자동으로 역이이스케이프하므로 도구는 역이이스케이프된 내용을 보존합니다. 원본 XML에 &lt;로 작성되어 있으면 변환 후 JSON의 값은 <가 됩니다. 이는 XML 표준 동작이며 사용자 기대에 부합합니다. 원본 이스케이프 형식을 보존해야 하는 경우 xml-formatter 라이브러리나 자체 구현 XML tokenizer로 DOMParser를 대체할 수 있습니다.

YAML 출력에 타입 정보가 없는 이유는 무엇인가요?

YAML 형식 자체는 타입을 지원하지만(예: 12는 number, true는 boolean, null은 null), 본 도구의 간이 YAML 변환기는 모든 값을 문자열로 직렬화합니다. 타입을 보존해야 하는 경우 js-yaml 등 성숙한 YAML 라이브러리를 사용하거나, 파싱 측에서 JSON Schema 검증 후 타입을 강제 변환하세요.

XML 처리 명령(PI)이 포함된 입력은 어떻게 처리되나요?

DOMParser는 기본적으로 XML 처리 명령(예: <?xml-stylesheet ...?>)을 document.firstChild의 ProcessingInstruction 노드로 보존합니다. 본 도구는 현재 Element 노드만 순회하므로 처리 명령은 무시됩니다. 보존해야 하는 경우 사용 전에 수동으로 document.firstChild.nodeValue를 추출할 수 있습니다.

다운로드한 .json 파일은 무엇으로 열 수 있나요?

다운로드 파일 output.json은 UTF-8 인코딩의 표준 JSON 파일로, 어떤 텍스트 에디터(VS Code, Sublime, Notepad++)나 전문 JSON 도구(jq, JSDoc)로도 열 수 있습니다. 브라우저에 직접 드래그하여 포맷된 구조를 볼 수도 있습니다. JavaScript, Python, Node.js, Java, Go 등 거의 모든 프로그래밍 언어에 JSON 파서가 내장되어 있습니다.

용어집

XML (eXtensible Markup Language)
확장 가능 마크업 언어, W3C가 1998년에 제정. 꺾쇠괄호 태그로 데이터 구조와 내용을 기술하며 네임스페이스, Schema 검증, XSLT 변환을 지원. SOAP Web Service, Office Open XML, RSS, Atom 등의 표준 형식.
JSON (JavaScript Object Notation)
경량 데이터 교환 형식, JavaScript 객체 구문을 기반으로 하나 프로그래밍 언어에 비의존적. 객체({}), 배열([]), 문자열, 숫자, 불리언, null의 6가지 기본 타입을 지원. 현대 Web API, NoSQL 데이터베이스, JavaScript 생태계의 사실상 표준.
DOMParser
브라우저 네이티브 API(W3C DOM 표준)로 XML 또는 HTML 문자열을 DOM 트리로 파싱. 모든 현대 브라우저(Chrome, Firefox, Safari, Edge)에 내장되어 있으며 서드파티 라이브러리 불필요. DOM 트리를 기반으로 XML 내용을 쉽게 순회, 쿼리, 수정할 수 있음.
xml-formatter
경량 JavaScript 라이브러리(30KB 미만)로 XML 문서의 포맷팅(prettyPrint)과 압축(minify)을 지원. 사용자 정의 들여쓰기, 줄바꿈 문자, collapseContent 등 옵션 지원. 본 도구에서 XML 포맷팅 및 압축 기능에 사용.
속성 매핑(attribute mapping)
XML 요소 속성을 JSON 객체 필드로 변환하는 매핑 방식. 본 도구는 직접 매핑 방식을 채택: <book id="1">을 {id: "1"}로 변환하며 @ 접두사를 사용하지 않음. 더 깔끔한 JSON 구조가 생성되어 TypeScript interface 정의가 더 간단해짐.
중복 요소 배열화
XML 내 동일한 이름의 중복 요소(예: 여러 <item>)를 자동으로 JSON 배열로 병합하는 것. 이는 XML to JSON의 핵심 설계 결정으로 JSON의 목록 의미론에 부합하며 데이터 유실을 방지.
value 필드
본 도구가 약속한 XML 요소 텍스트 내용의 필드명. 요소 <title>Great Gatsby</title>는 {value: "Great Gatsby"}로 변환. 요소에 속성과 텍스트가 모두 있는 경우 속성과 value가 동일한 객체 내에 나란히 배치됨.
YAML (YAML Ain't Markup Language)
사람 친화적인 데이터 직렬화 형식으로 Kubernetes, Docker Compose, Ansible, GitHub Actions 등 구성 파일에 널리 사용. 본 도구는 간이 YAML 출력을 지원하며 2칸 공백 들여쓰기, 목록 접두사 -, 키-값 쌍 : 구분자를 사용.
SOAP (Simple Object Access Protocol)
XML 기반 웹 서비스 통신 프로토콜. SOAP 메시지는 SOAP envelope(XML 네임스페이스)으로 래핑되며 header와 body(XML payload)를 포함. 본 도구는 SOAP 메시지를 JSON으로 파싱하여 현대 JavaScript 서비스에서 사용할 수 있게 함.
RSS / Atom feed
XML 기반 콘텐츠 구독 형식. RSS 2.0 형식은 <rss><channel><item> 구조로 콘텐츠를 구성하고, Atom은 <feed><entry> 구조를 사용. 본 도구는 RSS/Atom을 JSON 배열로 변환하여 프론트엔드 표시나 데이터베이스 집계에 편리하게 함.
XML 네임스페이스(namespace)
xmlns 속성을 통해 요소 이름 충돌을 피하는 메커니즘으로 형식은 xmlns:prefix="uri". DOMParser는 네임스페이스를 네이티브로 지원하며, 네임스페이스 접두사는 요소 이름의 일부로 JSON에 보존됨.
CDATA 섹션
XML의 특수 구문 <![CDATA[...]]>로, 요소 내에 특수 문자(<, >, & 등)를 포함하는 텍스트를 이스케이프 없이 삽입할 수 있게 함. DOMParser는 CDATA 내용을 요소의 textContent에 병합하며, 도구는 일반 텍스트로 처리.
tryFixXML
본 도구에 내장된 XML 복구 함수로, 누락된 XML 선언(<?xml version="1.0" encoding="UTF-8"?>)을 자동 추가하고 br, hr, img 등 흔한 자체 닫기 태그에 /를 보완. 구형 시스템이나 형식이 맞지 않는 서드파티 인터페이스의 더티 데이터를 처리.
prettyPrint
xml-formatter 라이브러리의 출력 모드. 활성화하면 생성된 XML에 자동으로 들여쓰기와 줄바꿈(예: 2칸 공백 들여쓰기)이 추가되어 가독성이 높아지며, 비활성화하면 공백 없는 컴팩트 출력(minify)이 됨.

XML 요소에서 JSON 필드로의 매핑 규칙

본 도구의 DOMParser 기반 변환 매핑 규칙:

XML 구조XML 예시JSON 출력매핑 규칙
element with attrs<book id="1" category="fiction"/>{"id": "1", "category": "fiction"}속성이 객체 필드로 직접 매핑(@ 접두사 없음)
element with text<title>Great Gatsby</title>{"value": "Great Gatsby"}요소 텍스트 내용이 value 필드에 저장
attrs + text<price currency="USD">12.99</price>{"currency": "USD", "value": "12.99"}속성과 텍스트가 동일한 객체 내에 나란히 배치
no attrs, no text<book id="1"/>{"id": "1"}속성만 있고 value 필드는 없음
nested elements<book><title>Gatsby</title></book>{"title": {"value": "Gatsby"}}자식 요소가 객체 필드로 변환
repeated elements<books><book/><book/></books>{"book": [{}, {}]}동일한 이름의 중복 요소가 자동으로 배열로 병합
root element<bookstore>...</bookstore>{"bookstore": {...}}루트 노드가 { [tagName]: ... }로 래핑
namespace prefix<svg:circle/>{"svg:circle": {...}}DOMParser가 네임스페이스를 네이티브 지원

JSON vs YAML 출력 형식 비교

본 도구가 지원하는 두 가지 출력 형식의 특징과 적합한 사용 시나리오:

항목JSONYAML설명
구문{ } : [ ] 간결들여쓰기 + - 목록JSON이 더 간결하고 YAML이 더 읽기 쉬움
데이터 타입네이티브 number/bool/null네이티브 number/bool/null둘 다 타입을 보존
들여쓰기2칸 공백 들여쓰기2칸 공백 들여쓰기본 도구는 2칸 공백으로 통일
배열[1, 2, 3]- 1 - 2 - 3JSON은 대괄호, YAML은 대시 사용
주석미지원(표준)# 주석YAML은 주석 지원
가독성중간(괄호 노이즈)높음(자연어에 가까움)YAML의 가독성이 더 좋음
사용 시나리오REST API, 프론트엔드/백엔드K8s, Docker, CI/CD웹은 JSON, 구성은 YAML

XML과 JSON 형식 비교

두 데이터 형식을 여러 항목에서 비교하여 XML 또는 JSON 선택 시 이해를 돕습니다:

항목XMLJSON설명
구문< > </> 장황{ } : [ ] 간결JSON 구문이 더 간결하고 XML 태그는 더 길지만 가독성이 높음
데이터 타입모두 문자열네이티브 number/bool/nullJSON은 타입을 보존하고 XML은 schema로 타입 검증 필요
배열중복 요소 <i>1</i><i>2</i>네이티브 [1,2,3]JSON 배열이 간결하고 XML 배열은 명명 규칙에 의존
주석<!-- 주석 -->미지원(표준)XML은 주석을 지원하고 JSON 표준은 지원하지 않음
네임스페이스xmlns 지원없음XML은 대규모 문서의 이름 충돌 방지
Schema 검증XSD / DTDJSON Schema둘 다 성숙한 schema 검증 메커니즘 보유
파싱 성능느림(태그 오버헤드)더 빠름(~3-5x)JSON 파싱이 더 간단하고 XML 파싱은 더 복잡
사용 시나리오SOAP, 엔터프라이즈, OfficeREST API, 프론트엔드/백엔드현대 웹은 JSON, 전통 엔터프라이즈는 XML

Privacy & Security

본 XML to JSON 도구의 모든 작업은 완전히 사용자의 브라우저 로컬에서 완료됩니다: XML 파싱(브라우저 네이티브 DOMParser 기반), DOM 트리 순회, JSON 직렬화, YAML 변환이 모두 브라우저 JavaScript를 통해 클라이언트 측에서 실행되며, xml-formatter가 유일한 외부 의존성(30KB 미만의 npm 패키지)입니다. 원본 XML 데이터는 어떤 서버에도 업로드되지 않습니다. 파일 업로드는 브라우저 네이티브 FileReader API로 메모리에 직접 읽어들이며 중간 서비스를 경유하지 않습니다. Cookie 추적을 사용하지 않으며 사용자 입력이나 사용 데이터를 수집하지 않습니다. 페이지를 닫거나 새로고침하면 모든 입력과 출력 내용이 메모리에서 자동으로 삭제됩니다. 민감한 비즈니스 데이터(주문 정보, 사용자 자격 증명, 엔터프라이즈 API 응답)가 포함된 XML 메시지 처리에 적합합니다.

Authoritative References