XML 포매터

SOAP 서비스, RSS 피드, 설정 내보내기에서 나온 압축된 XML 덤프는 한 줄로는 읽을 수 없습니다. 이 포매터는 문서를 파싱해 일관된 들여쓰기(공백 2칸 또는 4칸, 탭, 또는 압축 출력을 위한 들여쓰기 없음)로 재구성하고, 속성 순서와 CDATA 섹션을 보존하며, 적격성 문제를 정확한 줄과 열과 함께 보고해 어긋난 태그를 찾아 헤매지 않고 고칠 수 있게 합니다.

XML을 포맷하는 방법

  1. 1

    XML 붙여넣기

    길이와 인코딩 제한 없음. 선언은 보존됩니다.

  2. 2

    들여쓰기 선택

    공백(2칸 또는 4칸), 탭, 또는 압축.

  3. 3

    포맷

    파서가 DOM을 만든 뒤 일관된 간격으로 다시 직렬화합니다.

  4. 4

    결과 복사

    출력은 로그나 문서에 바로 붙여넣을 수 있는 적격 XML입니다.

포맷이 보존하는 것

  • XML 선언 (<?xml version="1.0" encoding="UTF-8"?>)을 그대로 유지.
  • DOCTYPE 선언과 내부 서브셋 보존.
  • 처리 명령어 (<?xml-stylesheet ?>)를 자체 줄에 유지.
  • 주석을 문맥에 따라 자체 줄 또는 인라인에.
  • CDATA 섹션을 내부 공백 포함 정확히 보존.
  • 속성 값을 큰따옴표가 없으면 큰따옴표로, 있으면 작은따옴표로 다시 인용.
  • &amp;, &lt;, &gt; 같은 엔티티 참조는 전체 엔티티 확장을 켜지 않는 한 그대로 둠.

들여쓰기 예시

입력(압축됨):

<books><book id="1"><title>1984</title><author>George Orwell</author></book></books>

포맷됨(공백 2칸):

<books>
  <book id="1">
    <title>1984</title>
    <author>George Orwell</author>
  </book>
</books>

도구가 잡아내는 흔한 오류

오류 해결
어긋난 닫는 태그 여는 이름과 닫는 이름 맞추기
닫히지 않은 요소 닫는 태그 추가
태그 이름의 잘못된 문자 태그 이름은 글자나 밑줄로 시작해야 함
같은 요소의 중복 속성 중복 제거
잘못된 CDATA <![CDATA[와 ]]> 짝 확인
텍스트에 이스케이프되지 않은 < 또는 & &lt; 또는 &amp; 사용

적격성 대 유효성

  • 적격한(well-formed) XML은 구문 규칙을 따릅니다: 균형 잡힌 태그, 유효한 문자, 올바른 중첩. 포매터는 이를 확인합니다.
  • 유효한(valid) XML은 추가로 스키마(DTD 또는 XSD)를 따릅니다. 그것을 확인하려면 XSD 검증기를 사용하세요.

XML 문서는 유효하지 않으면서 적격할 수 있지만, 그 반대는 안 됩니다.

실용적 참고

  • XML 속성 순서는 일부 시스템(현대 시스템은 많지 않음)에 의미가 있습니다, 포매터는 입력 순서를 보존합니다.
  • 자체 닫음 vs 명시적 빈 태그: <foo/>와 <foo></foo>는 XML에서 동등합니다. 포매터는 옵트아웃하지 않는 한 빈 요소에 자체 닫음을 사용합니다.
  • 네임스페이스 접두사는 정확히 보존됩니다.

자주 묻는 질문

네. 혼합 콘텐츠 요소와 CDATA 섹션 안의 텍스트는 그대로 유지됩니다. 요소 사이의 공백만 들여쓰기를 위해 조정됩니다.

브라우저에서 실용적 한계는 약 50 MB입니다. 그 이상은 DOM 파싱이 메모리를 너무 많이 씁니다. 거대한 파일에는 명령줄의 xmllint 같은 스트리밍 포매터를 사용하세요.

네. 네임스페이스 선언은 해당 요소에 보존됩니다. 포매터는 “네임스페이스 통합”을 켜지 않는 한 그것들을 루트로 재배치하지 않습니다.

아니요. 파싱과 포맷은 브라우저에서 이루어지며 아무것도 전송되지 않습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다