본문으로 건너뛰기
Case Converter Online
ko

XML 포매터와 유효성 검사기

XML을 붙여넣으면 깔끔하게 들여쓰기하거나, 압축하거나, 형식이 올바른지 검사합니다. 깨진 마크업은 추측해서 고치지 않고 줄과 열로 알려 줍니다.

XML 코드를 붙여넣거나 예시를 누르세요. Ctrl과 Enter를 누르면 포맷됩니다. 모든 작업은 브라우저에서 실행됩니다.

XML 포매터가 하는 일

XML은 구조화된 데이터를 중첩된 태그로 저장합니다. RSS 피드, 사이트맵, SOAP API, 안드로이드 레이아웃, Maven pom.xml 파일, Office 문서, 그리고 수많은 데이터 내보내기 파일에 쓰입니다. 기계가 만든 XML은 긴 한 줄인 경우가 많습니다. 이 XML 포매터는 요소를 한 줄에 하나씩, 일관된 들여쓰기로 정렬해 중첩 구조를 쉽게 따라갈 수 있게 합니다.

작업은 세 가지입니다.

  • 포맷: XML을 들여쓰기해 정렬합니다.
  • 압축(Minify): 태그 사이의 공백을 지워 파일을 작게 만듭니다.
  • 검사: 문서가 올바른 형식인지 확인하고 첫 번째 문제를 알려 줍니다.

사용 방법

  1. 왼쪽 상자에 XML을 붙여넣거나, 파일 열기 또는 예시를 누릅니다. 붙여넣은 XML은 바로 정렬됩니다.
  2. 들여쓰기를 공백 2칸, 공백 4칸, 탭 중에서 고릅니다.
  3. 포맷, 압축(Minify), 검사 중 하나를 누릅니다. Ctrl+Enter는 마지막 작업을 다시 실행합니다.
  4. 복사를 누르거나, 다운로드를 눌러 결과를 .xml 파일로 저장합니다.

정렬 전과 후

한 줄로 된 상품 카탈로그입니다.

<?xml version="1.0" encoding="UTF-8"?><catalog><book id="bk101"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><price>44.95</price></book><book id="bk102"><author>Ralls, Kim</author><title>Midnight Rain</title><price>5.95</price></book></catalog>

공백 2칸으로 포맷한 결과입니다.

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <price>44.95</price>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <price>5.95</price>
  </book>
</catalog>

텍스트 내용은 요소와 같은 줄에 남습니다. 이 점이 중요한 이유는 <price>44.95</price> 안에 줄바꿈을 넣으면 프로그램이 읽는 값이 달라지기 때문입니다.

압축(Minify) 버튼은 정렬된 버전을 위의 한 줄짜리로 되돌립니다. 같은 입력에 검사를 실행하면 올바른 형식의 XML입니다. 루트 요소는 <catalog>이며, 요소는 모두 9개입니다.라고 알려 줍니다.

CDATA 섹션은 작성한 그대로 남으므로 <script><![CDATA[if (a < b) run();]]></script>는 바뀌지 않고 그대로 나옵니다.

검사기가 잡아내는 오류

많은 XML 포매터는 깨진 마크업을 조용히 “수리”합니다. 예를 들어 의도하지 않은 위치에서 태그를 닫아 버립니다. 이 도구는 문서를 먼저 검사하고 첫 번째 문제에서 멈춥니다. 다음은 실제 메시지입니다.

입력 메시지
<to>Tove</from> 2행 11열: 2행에서 연 <to> 태그와 닫는 태그 </from>의 짝이 맞지 않습니다
Smith & Sons 1행 16열: "&" 문자만 단독으로 쓸 때는 &amp;로 써야 합니다
닫지 않은 <item> 4행 1열: 3행에서 연 <item> 태그와 닫는 태그 </list>의 짝이 맞지 않습니다
<book id=101/> 1행 10열: "id"의 값은 따옴표로 감싸야 합니다
최상위 요소 두 개 2행 1열: 루트 요소는 하나만 둘 수 있는데 두 번째 루트 요소가 있습니다: <b>

입력에서 보기를 누르면 커서가 문제 위치로 이동합니다.

“올바른 형식(well-formed)“의 의미

XML 문서가 다음 기본 문법 규칙을 따르면 올바른 형식이라고 합니다.

  • 모든 여는 태그에는 짝이 맞는 닫는 태그가 있거나, <br/>처럼 스스로 닫힙니다.
  • 태그는 연 순서의 반대로 닫힙니다.
  • 루트 요소는 정확히 하나입니다.
  • 속성 값은 작은따옴표나 큰따옴표로 감싸고, 한 요소에 같은 속성이 두 번 나오지 않습니다.
  • 텍스트 안의 &나 < 문자는 &amp;나 &lt;로 씁니다.
  • <?xml ... ?> 선언이 있다면 파일의 맨 처음에 와야 합니다.

&nbsp; 같은 이름 있는 엔티티는 DOCTYPE에서 선언했을 때만 쓸 수 있습니다. XML 자체가 아는 엔티티는 &lt;, &gt;, &amp;, &apos;, &quot; 다섯 개뿐이기 때문입니다.

팁과 한계

  • 검사에는 스키마를 쓰지 않습니다. 올바른 형식이더라도 애플리케이션에 맞지 않는 요소가 들어 있을 수 있습니다.
  • 텍스트 안의 공백은 유지됩니다. 텍스트를 다시 배치해야 한다면 직접 고치세요.
  • 압축할 때 주석은 남깁니다. 가장 작은 파일이 필요하다면 주석을 먼저 지우세요.
  • 모든 작업이 로컬에서 이루어지므로 사내 설정 파일이나 내보낸 데이터도 안심하고 붙여넣을 수 있습니다.

XML을 정렬하는 다른 방법

xmllint. Linux와 macOS에서 xmllint --format file.xml은 들여쓰기된 사본을 출력하고, xmllint --noout file.xml은 오류만 보고합니다. --schema 옵션으로 스키마 기준 검증도 할 수 있습니다.

VS Code. XML 확장(Red Hat의 XML 확장이 흔히 쓰입니다)을 설치한 뒤 Format Document(문서 서식)를 실행합니다.

Notepad++. XML Tools 플러그인이 Pretty Print 명령을 추가합니다.

관련 도구

데이터가 JSON이라면 JSON 포매터를 쓰세요. 설정 파일에는 같은 일을 YAML에 해 주는 YAML 포매터가 있습니다. 웹 페이지에는 XML이 허용하지 않는 HTML 규칙까지 이해하는 HTML 포매터를 쓰세요.

XML 포매터 자주 묻는 질문

포매터가 XML을 고쳐 주지 않고 거부하는 이유는 무엇인가요?

빠진 태그가 어디에 들어가야 할지 추측하면 데이터가 모르는 사이에 바뀔 수 있습니다. 이 도구는 먼저 XML이 올바른 형식(well-formed)인지 확인한 다음 정렬합니다. 형식이 올바르지 않으면 줄, 열, 무엇이 잘못되었는지를 알려 주므로 직접 고칠 수 있습니다.

스키마를 기준으로 XML을 검증하나요?

아니요. 검사 버튼은 XML이 올바른 형식인지만 확인합니다. 태그 짝이 맞는지, 속성 값이 따옴표로 감싸져 있는지, 루트 요소가 하나인지, 엔티티가 바르게 쓰였는지를 봅니다. XSD나 DTD 기준 검증에는 xmllint 같은 스키마 지원 도구가 필요합니다.

요소 안의 텍스트가 바뀌나요?

아니요. 짧은 텍스트는 태그와 같은 줄에 남으므로 <title>Midnight Rain</title>은 그대로 유지됩니다. 주석, CDATA 섹션, XML 선언도 유지됩니다.

HTML에도 쓸 수 있나요?

HTML이 올바른 XML(XHTML)이기도 할 때만 가능합니다. 일반 HTML은 <br>처럼 닫는 태그가 없는 태그를 허용하지만 XML은 허용하지 않습니다. 일반 웹 페이지에는 HTML 포매터를 쓰세요.

XML이 어딘가로 업로드되나요?

아니요. 포매터와 검사기 모두 브라우저에서 실행됩니다. 파일 열기로 연 파일도 기기 안에서 읽힙니다.

코드와 데이터 도구 더 보기

전체 도구 보기