MODOO HUB ← 모두의 툴
Dev · Instrument

XML JSON

XML 붙여넣기 → JSON 즉시 변환

XML
JSON

XML to JSON 변환기

XML 데이터를 JSON으로 즉시 변환합니다. XML 속성(@), 텍스트(#text), CDATA, 중첩 요소를 처리하지만, 텍스트와 자식 요소가 뒤섞인 "혼합 콘텐츠"에서는 원래 순서와 띄어쓰기가 사라질 수 있습니다. 예를 들어 <p>Hello <b>world</b>!</p>를 변환하면, 각 텍스트 노드가 개별적으로 trim() 처리된 뒤 순서 구분 없이 그대로 이어붙기 때문에 {"#text":"Hello!","b":"world"}처럼 "Hello"와 "!" 사이의 공백이 사라지고 "world"가 원래 그 사이에 있었다는 위치 정보도 JSON만 보고는 알 수 없게 됩니다. RSS <description>처럼 HTML 태그가 섞인 텍스트를 변환할 때 특히 이런 현상이 나타날 수 있습니다.

자주 묻는 질문

텍스트와 자식 태그가 섞인 XML을 변환하면 어떻게 되나요?

<p>Hello <b>world</b>!</p>처럼 텍스트 사이에 자식 요소가 끼어 있는 "혼합 콘텐츠"를 변환하면, 텍스트 조각들이 원래 순서와 무관하게 #text 키 하나로 합쳐지고 자식 요소는 별도 키로 분리됩니다. 결과는 {"#text":"Hello!","b":"world"}가 되어, "world"가 원래 "Hello"와 "!" 사이에 있었다는 사실이 JSON 구조만으로는 드러나지 않습니다.

왜 "Hello"와 "!" 사이의 공백이 사라지나요?

각 텍스트 노드를 처리할 때 코드가 node.nodeValue.trim()으로 앞뒤 공백을 개별적으로 제거합니다. "Hello "라는 텍스트 노드는 트림되어 "Hello"가 되고, 그 뒤에 오는 "!" 노드와 공백 없이 그대로 이어붙기 때문에 원래 있던 단어 사이 공백이 사라집니다.

이 문제는 어떤 종류의 XML에서 특히 나타나나요?

RSS/Atom의 description 필드처럼 텍스트 안에 HTML 태그가 섞여 있는 경우, SVG의 텍스트 요소, DocBook 같은 문서형 XML 등 "혼합 콘텐츠"가 흔한 포맷에서 두드러집니다. 반면 설정 파일이나 API 응답처럼 각 요소가 텍스트만 담거나 자식 요소만 담는 "순수 콘텐츠" 구조의 XML에서는 이 문제가 발생하지 않습니다.

같은 이름의 태그가 여러 개면 어떻게 처리되나요?

같은 이름의 형제 요소가 여러 개 있으면 자동으로 JSON 배열로 묶입니다. 단 하나만 있으면 배열이 아닌 단일 값(객체 또는 문자열)으로 처리됩니다.

빈 태그(<tag/>)는 어떻게 변환되나요?

속성도 없고 자식도 없는 빈 요소는 JSON에서 null 값이 됩니다.

XML 속성은 JSON에서 어떻게 표현되나요?

속성은 @속성명 형태의 키로 표현됩니다. <tag id="1"> → {"tag":{"@id":"1"}}.

CDATA는 어떻게 처리되나요?

CDATA 섹션의 내용은 일반 텍스트와 동일하게 #text로 추출되며, 혼합 콘텐츠에 CDATA가 섞여 있어도 위와 같은 순서/공백 손실이 똑같이 적용됩니다.

대용량 XML도 처리 가능한가요?

브라우저 내장 DOMParser로 전체를 한 번에 파싱하는 방식이라 수 MB 이상의 대용량 XML은 파싱 속도가 느려지거나 브라우저가 일시적으로 멈출 수 있습니다.