도구 소개
SOAP 응답, 사이트맵, Maven POM, JUnit XML 리포트는 한 줄로 되어 있으면 읽기 어렵습니다. 이 포매터는 먼저 브라우저 자체 XML 파서로 입력이 올바른 형식(well-formed)인지 확인한 다음, CDATA 섹션, 주석, 처리 명령, DOCTYPE을 작성된 그대로 두는 토크나이저로 다시 들여쓰기합니다. 텍스트만 담은 요소는 한 줄로 유지되므로 결과가 태그마다 한 줄씩이 아니라 사람이 직접 쓴 XML처럼 읽힙니다.
사용 방법
- XML을 붙여 넣거나 샘플 주문 문서를 불러오세요.
- Format(정렬)과 들여쓰기(2칸, 4칸 또는 탭)를 고르거나, Minify(압축)를 선택해 한 줄로 합치세요.
- XML이 올바른 형식이 아니면 빨간 배너에 표시된 줄과 열을 수정하세요.
- 결과를 복사하거나 다운로드하세요.
올바른 형식(well-formed)과 유효(valid)는 다릅니다
올바른 형식의 XML은 루트 요소가 정확히 하나이고, 모든 태그가 닫히고 올바르게 중첩되며, 속성 값이 따옴표로 감싸지고, 특수 문자가 이스케이프되는 등 구문 규칙을 따릅니다. 유효한 XML은 올바른 형식이면서 허용되는 요소와 값을 정의한 스키마(XSD)나 DTD도 준수합니다. 문서를 다시 들여쓰기하려면 먼저 파싱되어야 하므로 이 포매터는 올바른 형식인지 검사합니다. XSD 검증은 별도의 단계입니다.
XML이 파싱되지 않는 흔한 이유
- 텍스트 안의 이스케이프되지 않은 앰퍼샌드나 미만 기호:
&와<로 쓰거나 텍스트를 CDATA 섹션으로 감쌉니다. <Order>…</order>처럼 대소문자만 다른 태그: XML은 대소문자를 구분합니다.- 최상위 요소가 둘 이상인 경우: 하나의 루트로 감쌉니다.
<item id=7>처럼 따옴표 없는 속성 값.xmlns:soap="…"속성 없이 쓴<soap:Envelope>처럼 선언되지 않은 네임스페이스 접두사.- XML 선언 앞에 무언가 있는 경우:
<?xml version="1.0"?>은 앞에 공백 없이 맨 처음 문자여야 합니다.
테스터가 XML을 만나는 곳
SOAP와 레거시 엔터프라이즈 API, JUnit XML 테스트 리포트(대부분의 CI 서버가 읽는 형식), Maven pom.xml 파일, 사이트맵, RSS 피드, Android 레이아웃은 모두 XML입니다. Playwright는 reporter: [['junit', { outputFile: 'results.xml' }]]로 JUnit XML을 생성하며, 이 파일을 정렬해 보는 것이 CI가 테스트를 왜 실패로 집계했는지 확인하는 가장 빠른 방법입니다.
코드에서 XML을 어설션하려면 REST Assured가 body(hasXPath("/order/status[text()='SHIPPED']")) 같은 XPath 매처를 지원합니다. 명령줄에서는 xmllint --format file.xml이 파일을 정렬하고, 스크립트에서는 Python의 xml.dom.minidom.parseString(text).toprettyxml()이 같은 일을 합니다. XPath 표현식을 직접 시험해 보려면 XPath·CSS 선택자 테스터를 사용하세요.
XML 포매터 자주 묻는 질문
정렬하면 데이터가 바뀌나요?
태그 사이의 공백뿐인 텍스트는 제거되고 들여쓰기로 다시 만들어지며, 요소 안의 텍스트는 앞뒤 공백이 잘립니다. 데이터 중심 XML에는 문제가 없지만, 혼합 콘텐츠나 xml:space="preserve"가 중요한 요소에서는 사용하기 전에 결과를 비교하세요.
CDATA 섹션과 주석은 유지되나요?
네. CDATA 안의 마크업까지 포함해 바이트 단위로 그대로 복사됩니다. Minify 모드에서는 선택적으로 주석을 제거할 수 있습니다.