본문으로 건너뛰기

XML 포맷터 & 검증기

XML을 스페이스 2칸, 스페이스 4칸 또는 탭으로 들여쓰거나, 한 줄로 압축하거나, 왜 파싱되지 않는지 알아보세요. 올바른 형식의 XML은 요소 수, 중첩 깊이, 크기와 함께 결과가 나오고, 잘못된 XML은 파서의 메시지와 함께 결과가 나옵니다. 무료이며 회원가입이 필요 없고, XML은 브라우저를 벗어나지 않습니다.

모드

XML 포맷터 사용 방법

  1. 1. 모드를 고르세요. 서식 지정은 보기 좋게 정렬하고, 압축은 요소 사이의 공백을 제거합니다.
  2. 2. 들여쓰기를 고르세요. 서식 지정에서는 스페이스 2칸, 스페이스 4칸 또는 탭 중 하나를 고르세요.
  3. 3. XML을 붙여넣고 버튼을 누르세요. 결과가 아래에 세 가지 수치와 함께 나타납니다. 요소 수, 최대 깊이(루트는 1단계), 출력 크기(문자 수)입니다.
  4. 4. 오류가 나오면 고치세요. XML이 올바른 형식이 아니면 출력이 나오지 않고, 브라우저의 파서가 발견한 내용을 알려 줍니다. XML을 고친 뒤 버튼을 다시 누르세요.

올바른 형식과 유효함의 차이

XML을 '검증'한다고 할 때 두 가지 다른 것을 가리킬 수 있습니다. 문서가 W3C의 XML 1.0 권고안의 문법 규칙을 따르면 올바른 형식(well-formed)이고, 여기에 더해 DTD나 XSD 같은 스키마도 따르면 유효(valid)합니다. 이 도구는 브라우저에 내장된 XML 파서를 사용해 올바른 형식만 확인합니다. DTD나 스키마는 읽지 않으므로, 올바른 형식이지만 애플리케이션에 맞지 않는 문서(예: 필수 요소 누락)는 통과합니다. 이 도구가 강제하는 규칙은 다음과 같습니다:

규칙깨지는 경우
루트 요소는 하나최상위 요소가 두 개이거나, 루트 앞에 텍스트가 있는 경우
요소는 올바르게 중첩<a><b></a></b>
모든 시작 태그에는 종료 태그가 있어야 함<a><b></a>, 또는 <br/> 대신 <br>
이름은 대소문자를 구분<Title>…</title>
속성 값은 따옴표로 감싸야 함<a id=1/>
한 요소에 같은 속성을 두 번 쓸 수 없음<a id="1" id="2"/>
텍스트의 <와 &는 이스케이프해야 함<a>5 < 6 & 7</a>는 5 &lt; 6 &amp; 7이어야 함

XML에는 미리 정의된 엔티티가 정확히 다섯 개 있습니다 — &lt;, &gt;, &amp;, &apos;, &quot; — 따라서 &nbsp; 같은 HTML 엔티티는 DTD에서 선언하지 않는 한 오류입니다. 닫히지 않은 태그의 메시지는 브라우저의 문구이므로 브라우저마다 다릅니다. 예를 들어 Chrome에서 <a><b></a>는 1행 11열에서 "Opening and ending tag mismatch: b line 1 and a" 오류를 보고합니다.

포맷터가 바꾸는 것

이 도구는 XML을 트리로 파싱한 뒤 그 트리를 다시 씁니다. 따라서 출력은 입력 텍스트의 복사본이 아니라, 더 정돈된 배치의 동등한 XML입니다. 다음과 같은 차이가 생길 수 있습니다:

  • 선언과 DOCTYPE은 유지됩니다. 맨 앞의 <?xml …?> 줄과 <!DOCTYPE …> 선언(내부 서브셋 포함)은 입력한 그대로 다시 씁니다.
  • 속성은 순서를 유지하지만 큰따옴표로 다시 씁니다.
  • 엔티티는 해석됩니다. &apos;와 &#169; 같은 문자 참조는 실제 문자로 바뀝니다. 텍스트의 &, <, >와 속성의 &quot;만 다시 이스케이프합니다.
  • 빈 요소는 자체 닫힘이 됩니다. 내용이 없는 <a></a>는 <a/>가 되지만, 공백 하나만 들어 있는 요소는 <a></a>로 남습니다.
  • 주석, CDATA 섹션, 처리 명령은 유지됩니다.

실제 예시

이 한 줄짜리 문서에는 선언, 작은따옴표 속성, 주석, 빈 요소가 들어 있습니다:

입력

<?xml version="1.0" encoding="UTF-8"?><library><book id='1'><title>APA Manual</title><year>2020</year><!-- note --></book><book id="2"/></library>

서식 지정, 스페이스 2칸

9줄, 172자입니다. 선언 다음에 library가 여백에서 시작하고, 각 book은 두 칸 안으로 들어가며, title, year, 주석은 네 칸 안으로 들어갑니다. 첫 번째 책의 id는 이제 id="1"로 적힙니다.

압축

한 줄, 146자입니다.

통계

요소 5개, 최대 깊이 3(library, book, title).

압축은 선언을 유지하고 전체 트리를 한 줄에 놓으므로, 같은 문서가 172자에서 146자로 줄어듭니다. 출력 크기 카드에 이 문자 수가 표시됩니다.

어떤 도구가 필요한가요?

이 페이지는 XML용입니다. 닫히지 않은 태그를 허용하고 인라인 공백을 유지하는 HTML에는 HTML Formatter를 사용하세요. XML을 JSON 데이터로 바꾸려면, 속성과 반복되는 요소가 어떻게 대응되는지 보여 주는 예정된 XML to JSON Converter를 참고하세요. JSON 자체에는 JSON 포맷터를 사용하세요.

자주 묻는 질문

XML 포맷터는 무엇을 하나요?
XML을 다시 들여써서 중첩이 보이게 합니다. 보통 요소 하나당 한 줄로 정렬합니다. 이 도구는 새 레이아웃으로 다시 쓰기 전에 문서를 파싱해야 하므로, XML이 올바른 형식인지도 확인합니다.
여기서 XML 검증은 어떻게 작동하나요?
브라우저에 내장된 XML 파서가 텍스트를 읽습니다. XML이 문법 규칙을 어기면 파서의 오류가 표시되고 출력은 나오지 않습니다. 올바른 형식만 확인하며, DTD나 XSD 스키마로 검증하지는 않습니다.
주석, CDATA 섹션, 속성은 보존되나요?
네. 주석과 CDATA 섹션은 원래 모습 그대로 다시 쓰며, 속성은 순서를 유지하되 따옴표는 큰따옴표로 정규화합니다. DOCTYPE 선언은 입력한 그대로 다시 씁니다.
압축은 무엇을 하나요?
요소 사이의 공백과 줄바꿈을 제거해 같은 의미의 가장 짧은 텍스트를 만듭니다. 맨 앞의 XML 선언이 있으면 그것은 유지합니다. <title> 같은 요소 안의 텍스트는 공백을 유지하며, 굵은 단어가 있는 문단처럼 자식 요소 옆에 있는 텍스트도 그대로 유지합니다.
서식 지정을 하면 텍스트 간격이 바뀌는 이유는 무엇인가요?
자식 요소 옆에 있는 텍스트(굵은 단어가 있는 문단 등), 즉 혼합 콘텐츠를 서식 지정할 때만 그렇습니다. 서식 지정은 그 텍스트의 앞뒤 공백을 잘라 내고 각 조각을 별도의 줄에 놓으므로 공백이 바뀝니다. 압축은 이를 유지합니다. 요소가 텍스트 또는 다른 요소를 담는 데이터형 XML은 영향을 받지 않습니다.
&nbsp;가 있는 XML이 실패하는 이유는 무엇인가요?
XML에는 미리 정의된 엔티티가 다섯 개뿐이며, &nbsp;는 그중 하나가 아닙니다. 숫자 참조 &#160;로 바꾸거나 DTD에서 엔티티를 선언하세요.
제 XML이 서버에 업로드되나요?
아니요. 파싱과 서식 지정은 모두 브라우저에서 이루어지며, 붙여넣은 내용은 어디로도 전송되지 않습니다.

관련 도구

데이터·마크업·코드의 다른 도구