도구
가이드

XML 포매터 & 압축기

포맷

fast-xml-parser로 XML을 보기 좋게 정리하거나 압축합니다. 들여쓰기, 속성, 자기 닫기 태그를 정규화합니다. 순수 XML 처리이며 형식 변환은 하지 않습니다.

100% 클라이언트 백엔드 없음

원격 URL은 가져오지 않습니다. JSON을 직접 붙여넣으세요.

입력
출력
왼쪽에 XML을 붙여넣고 서식 또는 압축을 선택하세요.
이 페이지에서

XML 포매터란?#

XML 포매터는 구조를 잃어버린 문서 — 한 줄에 내뱉어진 SOAP 응답, 공백을 붕괴시킨 프록시를 거친 RSS 피드, 또는 들여쓰기를 보존하지 않는 텍스트 상자에서 편집된 설정 파일 — 를 받아 다시 들여쓰기하여 요소 계층이 보이게 합니다. 반대인 압축은 태그 사이의 공백 바이트를 모두 벗겨 내어 문서를 전송용으로 가능한 한 작게 만듭니다.

XML 왕복이 보기보다 어려운 이유는 <> 에 대한 단순한 찾기바꾸기가 정보를 파괴하기 때문입니다. 요소의 순서, <?xml?> 선언, 주석, <?xml-stylesheet?> 같은 처리 명령, 속성 순서, 그리고 <a></a><a/> 의 차이가 모두 의미를 가집니다. 이 페이지는 fast-xml-parserpreserve-order 모드로 써서 문서를 순서가 있는 트리로 파싱하고 충실하게 다시 만듭니다. 그래서 서식은 여러분의 문서의 정규화된 보지, 재정렬된 것이 아닙니다. 이것이 이 도구가 JSON/XML 변환기와 구분되는 이유이기도 합니다. XML에서 XML로의 순수한 왕복만 하고, 데이터 형식을 결코 바꾸지 않습니다.

사용 방법#

  1. 왼쪽의 입력 패널에 XML을 붙여넣으세요. 자리 표시자는 시작점이 필요할 때 최소한의 <?xml?> 문서를 보여 주며, 예제 를 누를 수도 있습니다.
  2. 도구 모음에서 모드 버튼을 고르세요.
    • 서식 — 파싱한 뒤 들여쓰기와 줄바꿈으로 다시 만듭니다. 빈 요소는 자기 닫기 형태로 붕괴되고(<a></a><a/> 로), 속성은 보존되며, 주석과 선언은 살아남습니다.
    • 압축 — 파싱한 뒤 태그 사이 공백과 끝 줄바꿈이 없는 단일 컴팩트 라인으로 다시 만듭니다.
  3. 서식 모드에서 들여쓰기 를 고르세요. 2, 4, 또는 .
  4. 출력 패널에서 결과를 읽으세요. 헤더는 출력 크기를 글자 수로 보여 주고, 복사 로 가져갑니다. 지우기 는 양쪽 패널을 초기화합니다.

입력이 잘 형성되지 않았다면 — 닫히지 않은 태그, &amp; 여야 할 곳의 잘못된 & — 상태 표시줄이 최선의 행과 열과 함께 오류를 보고하여, 빈 출력을 들여다보는 대신 문제를 찾을 수 있게 합니다.

주요 기능#

  • 충실한 왕복. preserve-order 파싱이 문서 순서, <?xml?> 선언, 주석, 처리 명령을 서식/압축 주기를 통해 유지합니다.
  • 두 모드가 하나의 파서를 공유. 서식과 압축이 동일하게 파싱합니다. 빌더가 텍스트를 내보내는 방식만 다릅니다. 그래서 압축이 성공하면 서식도, 그 반대도 마찬가지입니다.
  • 자기 닫기 정규화. <a></a> 같은 빈 요소가 <a/> 로 붕괴되어, 정규형 컴팩트 형태이며 diff할 때 공백 차이를 뚜렷하게 만듭니다.
  • 값은 문자열로 유지. 파서는 parseTagValue: false 로 설정되어, true 인 텍스트 노드는 문자열 "true" 로, 007"007" 로 남습니다. 돌아오는 길에 놀라게 할 조용한 타입 강제가 없습니다.
  • 큰 입력은 메인 스레드에서 벗어나 처리. 1 MB보다 큰 문서는 Web Worker를 거치므로 페이지가 응답성을 유지합니다. 더 작은 입력은 인라인으로 실행됩니다.
  • 엄격하게 클라이언트 사이드. 파서는 페이지에 꾸려 넣어져 있으며, 여러분의 XML은 결코 브라우저를 떠나지 않습니다.

실전 예시#

두 줄로 욱여넣어진 작은 설정 문서입니다.

입력:

<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"></feature></config>

서식2 칸으로 누르면:

<?xml version="1.0"?>
<config>
  <server host="example.com" port="443"/>
  <feature name="cache"/>
  <feature name="logs"/>
</config>

눈에 띄는 점이 두 가지입니다. <?xml version="1.0"?> 선언이 문서 맨 위에서 왕복을 살아남았습니다. 그리고 <feature name="logs"></feature> 와 이미 자기 닫기인 <feature name="cache"/> 가 모두 <feature name="logs"/> 로 나타납니다. 빈 요소가 자기 닫기 형태로 정규화되어, 같은 모양의 두 feature가 실제로 같아 보입니다. 원본 입력에서 압축 을 누르면 전송 형태를 얻습니다.

<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"/></config>

장식용 공백의 모든 바이트가 사라졌지만, <server> 의 속성 순서는 그대로이고 선언도 여전히 있습니다.

FAQ#

이 도구와 JSON/XML 변환기의 차이는 무엇인가요?#

이 도구는 XML을 넣고 XML을 받습니다. XML 문서를 보기 좋게 만들거나 압축하여 XML을 돌려줍니다. 이 사이트의 JSON/XML 변환기는 두 형식 사이를 번역하여, XML을 JSON 객체 트리로, 또는 그 반대로 바꿉니다. 같은 형식을 더 나은 모양으로 원하면 이 페이지를 쓰고, 실제로 형식을 바꾸고 싶으면 변환기를 쓰세요.

서식은 제 주석을 보존하나요?#

그렇습니다. 주석은 파싱 중에 순서가 있는 트리에 포착되어 빌더에 의해 다시 내보내지므로, <!-- note --> 가 서식과 압축 모두에서 살아남습니다. 처리 명령 <?xml-stylesheet?> 도 보존됩니다.

왜 오류 위치가 가끔 대략적인가요?#

밑바탕의 파서가 모든 실패 모드에 대해 글자 위치를 노출하지 않으므로, 어떤 오류에서는 이 페이지가 파서의 메시지에서 파싱해 낸 최선의 행과 열만 보고할 수 있습니다. 닫는 태그가 빠진 경우 위치는 보통 정확합니다. 더 생소한 파싱 실패에서는 1행으로 기본값을 잡을 수 있습니다. 오류 메시지 자체는 항상 전체가 표시되며, 이것이 보통 범인을 찾기에 충분합니다.

매우 큰 XML 파일도 처리할 수 있나요?#

그렇습니다, 브라우저의 메모리 한계까지. 1 MB를 넘는 입력은 Web Worker 안에서 파싱되어 UI가 멈추지 않습니다. 수백 메가바이트짜리 문서에서는 파싱에 눈에 띄는 시간과 메모리가 들 것으로 예상하세요. 이것은 스트리밍 서버가 아니라 브라우저 도구입니다.