XML 포맷터 & 뷰어
XML 데이터를 붙여넣으면 즉시 well-formed 여부를 검사하고, 예쁘게 정렬하거나 압축하고, 트리 구조로 시각화합니다. 서버로 전송하지 않고 브라우저 안에서만 처리됩니다.
🔗 링크 공유는 입력한 XML 원문을 링크 자체(주소창의 # 뒤)에 그대로 담습니다. 서버로 전송되지는 않지만, 링크를 받은 사람은 내용을 볼 수 있으니 민감한 데이터는 공유하지 마세요.
이 배너는 쿠팡 파트너스 활동의 일환으로 게재되며, 이에 따른 일정액의 수수료를 제공받습니다.
사용 방법
- 입력: 좌측 입력창에 XML 텍스트를 붙여넣거나, "파일 열기"로
.xml파일을 업로드하거나, 파일을 화면에 끌어다 놓으세요. - 포맷 / 압축 / 검증: 상단 버튼으로 들여쓰기를 적용한 포맷팅, 불필요한 공백을 제거하는 압축, 혹은 well-formed 여부만 확인하는 검증을 선택하세요.
- 결과 확인: 우측 패널에서 "트리 보기"로 태그·속성·텍스트를 접고 펼쳐가며 탐색하거나 "텍스트 보기"로 정렬된 원문을 확인하세요. 오류가 있으면 어느 줄, 몇 번째 글자에서 문제가 발생했는지 표시됩니다.
- JSON으로 변환: "JSON 변환" 탭을 누르면 XML 구조를 JSON 객체로 자동 변환합니다. 속성은
@속성명, 텍스트 내용은#text키로, 같은 이름의 반복 요소는 배열로 표현합니다. - 내보내기: 결과를 클립보드로 복사하거나 파일(
.xml또는.json)로 다운로드할 수 있습니다.
모든 처리는 브라우저 내부(JavaScript)에서만 이루어지며, 입력한 데이터는 서버로 전송되거나 저장되지 않습니다.
XML이란?
XML(eXtensible Markup Language)은 태그를 이용해 계층적인 데이터를 표현하는 마크업 언어입니다. HTML과 비슷한 문법을 쓰지만 태그 이름을 자유롭게 정의할 수 있어, 설정 파일, 문서 교환, SOAP/RSS 같은 프로토콜, 레거시 시스템 연동 등 다양한 곳에서 쓰입니다. 모든 시작 태그는 반드시 짝이 맞는 종료 태그(또는 self-closing 태그)를 가져야 하고, 루트 요소는 하나여야 하며, &·< 같은 특수문자는 반드시 엔티티로 이스케이프해야 하는 등 "well-formed" 규칙을 따릅니다. 이 도구는 그 규칙을 기준으로 입력을 검증합니다.
자주 묻는 질문
입력한 XML 데이터가 외부로 전송되나요?
아니요. 모든 파싱과 포맷팅은 브라우저 안에서 JavaScript로만 처리되며 서버로 전송되지 않습니다.
"well-formed"가 아니라는 오류는 왜 나오나요?
시작 태그와 종료 태그의 이름이 다르거나 짝이 맞지 않거나, 루트 요소가 두 개 이상이거나, 속성 값에 따옴표가 빠졌거나, 텍스트 안에 이스케이프하지 않은 &나 <가 있는 경우 발생합니다. 오류 메시지에 표시된 줄/열 번호 위치를 확인하세요.
DTD나 XSD 스키마 검증도 해주나요?
아니요. 이 도구는 XML 문법(well-formedness)만 검증하며, 특정 DTD·XSD 스키마에 맞는지까지는 검증하지 않습니다. 문법은 맞지만 스키마상 필수 요소가 빠진 경우는 걸러내지 못합니다.
CDATA 섹션은 어떻게 처리되나요?
<![CDATA[ ... ]]> 안의 내용은 마크업으로 해석하지 않고 그대로 보존합니다. 트리 보기에서도 별도 노드로 표시되며, 포맷/압축 시에도 내용이 바뀌지 않습니다.
큰 XML 파일도 처리할 수 있나요?
브라우저 메모리 범위 내에서는 수 MB 크기의 XML도 처리할 수 있습니다. 다만 매우 큰 파일에서는 트리 보기 렌더링이 느려질 수 있으니 텍스트 보기를 이용하세요.
XML과 JSON은 어떻게 다른가요?
JSON은 키-값 구조로 XML보다 간결하고 파싱이 빠르며, 대부분의 언어에서 별도 라이브러리 없이 다룰 수 있습니다. XML은 속성(attribute), 네임스페이스, 스키마(XSD), 혼합 콘텐츠 등 더 복잡한 문서 구조를 표현할 수 있지만 그만큼 용량이 크고 파싱 비용도 높습니다. 오늘날 REST API 응답은 대부분 JSON을 사용하지만, SOAP·RSS·설정 파일 등에서는 여전히 XML이 널리 쓰입니다.
XML을 JSON으로 변환하는 규칙은 무엇인가요?
루트 요소 이름이 최상위 키가 되고, 각 요소는 객체로, 속성은 @속성명 키로, 텍스트 내용은 (자식 요소가 없으면) 문자열 값 그대로 또는 #text 키로 표현됩니다. 같은 이름의 형제 요소가 여러 개면 배열로 묶입니다. 주석과 처리 지시문(PI)은 변환 결과에서 제외됩니다.