XML Formatter|XML 정리 및 검증 도구
XML formatter: 브라우저에서 XML 정리 및 검증. 압축, 설정 가능한 들여쓰기, 파일 다운로드 지원.
XML Formatter란?
XML Formatter는 원시 또는 압축된 XML을 올바르게 들여쓰기된 읽기 쉬운 출력으로 변환하는 브라우저 기반 도구입니다. 개발자와 데이터 엔지니어는 한 줄로 압축된 XML을 자주 접합니다 — 터미널에서 복사한 SOAP 응답, Maven POM 파일, Spring 설정 스냅샷, RSS 피드, 또는 디자인 도구에서 내보낸 SVG 파일 등. 이를 포맷 없이 읽는 것은 느리고 오류가 발생하기 쉽습니다.
이 도구는 브라우저의 기본 DOMParser로 XML을 검증한 다음 설정 가능한 간격으로 깔끔한 들여쓰기를 적용하여 이 문제를 해결합니다. 검증에 실패하면 정확한 파서 오류 메시지를 표시합니다. XML이 유효하면 포맷된 결과가 한 번의 클릭으로 복사 또는 다운로드할 수 있습니다. 모든 것이 브라우저 내에서 완전히 실행됩니다 — 서버로 데이터가 전송되지 않고, 계정을 만들 필요가 없으며, 도구는 완전히 무료입니다.
주요 기능
- 사용자 정의 들여쓰기(2 또는 4 스페이스)로 XML 포맷 — 작업 표시줄의 드롭다운에서 들여쓰기 크기를 선택합니다. 도구는 세션 동안 마지막으로 사용한 들여쓰기 크기를 기억하며, 서포터는 기본 프리셋으로 저장할 수 있습니다.
- 오류 메시지와 함께 XML 구문 검증 —
application/xmlMIME 타입을 사용한 브라우저의 기본DOMParser로 검증을 실행합니다. 결과 문서에서parsererror노드가 발견되면 출력 패널 아래에 파서 오류 텍스트가 표시됩니다. - XML 압축(공백 제거) — 태그 사이의 모든 공백을 제거한 압축 XML을 생성합니다. 페이로드, 로그 라인 또는 설정 문자열 삽입에 적합합니다.
- 포맷된 출력을 클립보드에 복사 — API를 사용할 수 없는 환경을 위한 textarea 폴백이 있는 Clipboard API를 사용합니다.
- .xml 파일로 다운로드 —
application/xmlMIME 타입으로formatted.xml로 출력을 저장합니다. - 키보드 단축키 — Ctrl+Enter(Mac에서는 Cmd+Enter)로 Format, Ctrl+Shift+M(Mac에서는 Cmd+Shift+M)으로 Minify를 실행합니다.
XML Formatter 사용 방법
1단계: XML 붙여넣기
/developer/code/xml-formatter에서 도구를 엽니다. 왼쪽 입력 패널에 XML 문서를 붙여넣습니다. 텍스트 영역은 고정폭 글꼴을 사용하고, 높이를 조절할 수 있으며, 브라우저가 편안하게 처리할 수 있는 모든 크기의 문서를 받습니다. 도구에서 적용하는 붙여넣기 크기 제한은 없습니다.
2단계: 들여쓰기 선택
두 패널 아래 작업 표시줄에서 들여쓰기 드롭다운을 열고 2 스페이스 또는 4 스페이스를 선택합니다. 2스페이스 들여쓰기는 프런트엔드 및 JavaScript 관련 도구에서 일반적입니다. 4스페이스는 Java, C# 및 XSLT, XSD와 같은 많은 엔터프라이즈 XML 표준에서 관례적입니다.
3단계: Format 클릭
Format을 클릭하거나 Ctrl+Enter / Cmd+Enter를 누릅니다. 도구는 먼저 DOMParser로 입력을 검증합니다. XML이 잘못된 경우 출력 패널 아래에 브라우저의 파서 오류를 보여주는 빨간 오류 메시지가 나타납니다(예: "error on line 5 at column 12: Opening and ending tag mismatch: config line 1 and value"). 검증을 통과하면 포맷된 XML이 오른쪽의 읽기 전용 출력 패널에 표시됩니다.
입력 예시(한 줄 Maven 의존성):
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.2.1</version><scope>compile</scope></dependency>
2스페이스 들여쓰기 출력:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.1</version>
<scope>compile</scope>
</dependency>
4단계: 압축 (선택 사항)
Minify를 클릭하거나 Ctrl+Shift+M / Cmd+Shift+M을 눌러 XML을 최소 한 줄 표현으로 압축합니다. 압축도 먼저 유효성 검사를 거칩니다 — 도구는 유효하지 않은 XML에서 압축 출력을 생성하지 않습니다. 이렇게 하면 구조 어딘가에 숨겨진 오류가 있는 문서를 실수로 압축하는 것을 방지합니다.
5단계: 복사 또는 다운로드
Copy를 클릭하여 포맷되거나 압축된 출력을 클립보드에 넣습니다. Download를 클릭하여 formatted.xml을 다운로드 폴더에 저장합니다. 출력 패널에 내용이 있을 때까지 두 버튼 모두 비활성화되어 있습니다.
실용적인 예시
SOAP 응답 정리
서비스 모니터링 도구가 간결성을 위해 SOAP 응답을 한 줄로 기록합니다. 지원 티켓을 위해 오류 응답을 읽어야 합니다:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>Authentication failed: token expired</faultstring></soapenv:Fault></soapenv:Body></soapenv:Envelope>
붙여넣고 Format을 클릭합니다. 중첩 구조가 즉시 명확해집니다 — Fault 요소가 Body 안에 있고 Body가 Envelope 안에 있으며, faultcode와 faultstring 값이 이제 각자의 읽기 쉬운 줄에 있습니다.
Spring 설정 파일 검토
동료가 모든 공백이 제거된 Spring applicationContext.xml 조각을 보내줍니다. 수동으로 줄 바꿈과 들여쓰기를 삽입하는 대신, 포매터에 붙여넣고 팀 규약에 맞는 4스페이스 들여쓰기로 Format을 클릭합니다. 포맷된 출력을 소스 파일에 직접 다시 붙여넣을 수 있습니다.
API 페이로드용 XML 압축
통합 사양에서 JSON 필드의 문자열 값으로 XML을 삽입해야 하며, 페이로드 크기를 줄이기 위해 모든 공백을 제거해야 합니다. 잘 포맷된 소스 XML을 붙여넣고 Minify를 클릭합니다. 출력은 태그 사이에 공백이 없는 한 줄로, 삽입이나 URL 인코딩할 준비가 됩니다.
팁과 모범 사례
편집 전에 검증하세요. 수백 줄의 XML 파일을 편집하려는 경우, 먼저 포매터를 통해 전달하세요. 빨간 오류 메시지가 변경 작업에 시간을 투자하기 전에 현재 상태가 유효한지 즉시 알려줍니다.
포매터는 CDATA 섹션을 처리합니다. <![CDATA[...]]> 블록 내의 내용은 포맷 중에 그대로 보존됩니다. 포매터는 CDATA 섹션의 내용을 들여쓰기 하려고 시도하지 않으므로 CDATA 내의 임베디드 코드나 일반 텍스트는 그대로 유지됩니다.
자기 닫힘 태그는 자기 닫힘으로 유지됩니다. 포매터는 자기 닫힘 태그(예: <br/>, <input type="text"/>)를 올바르게 식별하고 열기/닫기 쌍으로 변환하거나 그 반대로 변환하지 않습니다.
XSD와 XSLT에는 4스페이스 들여쓰기를 사용하세요. 이러한 XML 방언은 관례적으로 깊은 중첩을 가집니다. 4스페이스 들여쓰기는 2스페이스와 비교하여 구조적 계층을 한눈에 더 잘 볼 수 있게 합니다.
복사 후 편집기에서 열기. 포맷 후 Copy를 클릭하고 코드 편집기에 직접 붙여넣습니다. 포맷된 텍스트는 보이지 않는 문자가 없는 순수 UTF-8이므로 모든 편집기에 깔끔하게 가져올 수 있습니다.
자주 발생하는 문제와 해결 방법
네임스페이스가 많은 문서에서 "Invalid XML syntax" 오류 — 일부 XML 처리 도구는 브라우저의 DOMParser가 올바르게 처리하지만 특정 플랫폼에서 경고로 보고하는 네임스페이스 선언을 생성합니다. "Namespace prefix ns0 is not defined"와 같은 오류가 보이면, 루트 요소에 네임스페이스 선언이 있는지 확인하고 다시 시도하세요.
포맷된 출력에 예상치 못한 추가 빈 줄 — 포매터는 >\s*<를 >\n<로 교체한 후 \n으로 분할합니다. 태그 사이에 기존 줄 바꿈이 있는 문서는 일부 엣지 케이스에서 추가 빈 줄을 생성할 수 있습니다. 공백을 정규화하려면 Minify 버튼을 사용한 다음 다시 Format을 클릭하세요.
오류 메시지가 매우 길고 HTML을 포함 — 브라우저의 DOMParser에는 XML 파서의 전체 오류 텍스트가 포함되어 있으며, 파서가 HTML 오류 페이지를 삽입할 때 HTML 마크업을 포함하는 경우가 있습니다. 핵심 정보(줄 번호와 열)는 항상 메시지의 처음 두 줄에 있습니다.
Minify 버튼은 출력하지만 Format 버튼은 오류 표시 — 두 작업 모두 동일한 유효성 검사기를 먼저 통과하므로 이런 일이 발생해서는 안 됩니다. 이 현상이 발생하면 일반적으로 압축 시에 XML이 유효했지만 작업 사이에 입력이 변경되었음을 의미합니다. 두 패널을 지우고 처음부터 다시 시작하세요.
오류 메시지 없이 출력 패널이 비어 있음 — Format을 클릭했을 때 입력이 비어 있거나 공백만 있었음을 의미합니다. "Please enter XML to format" 오류 메시지가 출력 패널 아래에 표시됩니다.
개인정보 보호 및 보안
XML Formatter는 브라우저 내에서 완전히 실행됩니다. 모든 포맷 및 검증은 JavaScript와 브라우저의 기본 XML 파서를 통해 이루어집니다 — 입력한 텍스트는 외부 서버로 전송되지 않습니다. 이 도구는 인증 토큰, 비공개 설정 값, 내부 API 엔드포인트, 개인 식별 정보 또는 기타 민감한 내용을 포함하는 XML 문서에 안전합니다. 도구는 최초 페이지 로드 후 네트워크 연결 없이도 작동합니다.
자주 묻는 질문
XML Formatter는 무료인가요? 네, 완전히 무료입니다. 사용 제한 없음, 계정 불필요, 포맷 또는 검증 작업에 비용이 없습니다. Glyph Widgets 서포터 기능(프리셋 저장, 세션 기록, 도구 메모)은 Ko-fi 서포터에게 제공되지만 핵심 XML 포맷 기능은 제한이 없습니다.
오프라인에서 작동하나요? 네. 모든 작업이 브라우저에서 JavaScript와 브라우저의 내장 XML 파서를 사용하여 실행됩니다. 페이지가 로드되면 인터넷에서 연결을 끊고 중단 없이 XML 포맷 및 검증을 계속할 수 있습니다.
데이터는 안전한가요? 네. 붙여넣은 XML은 서버로 전송되지 않습니다. 세션 동안 브라우저의 메모리에 유지되며, Clear 버튼을 클릭하거나 탭을 닫으면 지워집니다.
유효성 검사기는 어떤 종류의 XML 오류를 감지하나요? 유효성 검사기는 application/xml 파싱을 사용한 브라우저의 기본 DOMParser를 사용하여 닫히지 않은 태그, 일치하지 않는 여는/닫는 태그 이름, 유효하지 않은 네임스페이스 선언, 잘못된 속성 구문, 불법 문자, 중복 속성 이름을 감지합니다.
포매터는 XML 선언과 처리 지시문을 지원하나요? 네. <?xml version="1.0" encoding="UTF-8"?> 선언과 <?xml-stylesheet type="text/xsl" href="style.xsl"?>과 같은 처리 지시문은 포맷 중 원래 위치에 보존됩니다.
SVG 파일을 포맷할 수 있나요? 네. SVG는 올바른 형식의 XML이며 올바르게 포맷됩니다. 포매터는 모든 SVG 요소 중첩, 속성 값(d 경로 데이터 포함), 네임스페이스 선언을 보존합니다. <path> 요소 내의 d 속성 값에는 포매터가 수정하지 않는 좌표 시퀀스가 포함되어 있습니다.
Format과 Minify의 차이점은 무엇인가요? Format은 문서를 사람이 읽기 쉽게 만들기 위해 들여쓰기와 줄 바꿈을 추가합니다. Minify는 가능한 가장 작은 표현을 생성하기 위해 태그 사이의 모든 공백을 제거합니다. 두 작업 모두 XML을 먼저 검증하고 입력이 유효하지 않으면 출력을 거부합니다.
XHTML 문서에서 사용할 수 있나요? 네. XHTML은 유효한 XML이며 올바르게 파싱 및 포맷됩니다. 올바른 형식의 XML이 아닌 HTML5 문서(예: 닫는 태그 누락, 따옴표 없는 속성)는 검증에 실패합니다.
포맷 키보드 단축키는 무엇인가요? Windows/Linux에서 Ctrl+Enter, macOS에서 Cmd+Enter. 압축하려면 Windows/Linux에서 Ctrl+Shift+M, macOS에서 Cmd+Shift+M을 사용합니다.
포매터는 속성 순서를 변경하나요? 아니요. 요소 내의 속성 순서는 보존됩니다. 포매터는 요소 사이에 들여쓰기와 줄 바꿈만 추가합니다 — 속성 값을 재정렬하거나 수정하지 않습니다.
관련 도구
JSON Formatter — 동일한 들여쓰기 컨트롤로 JSON 포맷, 검증, 압축, 스키마 검증, 스키마 생성, 트리 뷰어도 제공합니다.
YAML Formatter — YAML 파일을 포맷하고 선택적으로 JSON 출력으로 변환합니다.
지금 XML Formatter를 사용해 보세요: XML Formatter