XML 포맷터
📋 포맷/변환XML 데이터를 깔끔하게 들여쓰기하거나 한 줄로 압축합니다.
📄 XML 포맷터란?
XML을 계층 구조에 맞춰 정렬·압축하고 유효성까지 검사합니다. 1~8칸 들여쓰기로 가독성을 높이거나, 공백을 제거해 용량을 줄입니다.API 응답 분석, 설정 파일(pom.xml, web.xml) 편집, SOAP 디버깅, RSS/Atom 피드 확인 등 다양한 작업에 활용됩니다.
🔧 주요 기능
포맷팅 (Prettify)
1~8칸 들여쓰기로 계층 구조를 시각화
압축 (Minify)
공백과 줄바꿈 제거로 용량 최소화
유효성 검사
well-formed XML 여부 자동 확인
복사 기능
결과를 클립보드에 바로 복사
📋 XML vs JSON 비교
| 항목 | XML | JSON |
|---|---|---|
| 가독성 | 태그로 명확 | 간결함 |
| 용량 | 크다 | 작다 |
| 속성 | 지원 | 미지원 |
| 주석 | 지원 | 미지원 |
📄 포맷팅 전후 비교
API 응답이나 로그에서 가져온 XML은 대개 한 줄로 붙어 있어 구조가 보이지 않습니다. 들여쓰기만 넣어도 어떤 요소가 어디에 속하는지 즉시 드러납니다.
입력 (한 줄)
<order id="1001"><customer><name>홍길동</name><email>hong@example.com</email></customer><items><item sku="A-01"><qty>2</qty><price>15000</price></item></items></order>
출력 (2칸 들여쓰기)
<order id="1001">
<customer>
<name>홍길동</name>
<email>hong@example.com</email>
</customer>
<items>
<item sku="A-01">
<qty>2</qty>
<price>15000</price>
</item>
</items>
</order>🔤 XML 이스케이프 문자
아래 5개 문자는 XML 문법에서 특별한 의미를 가지므로, 값으로 쓰려면 반드시 치환해야 합니다. 파싱 오류의 상당수가 여기서 발생합니다.
| 문자 | 이스케이프 | 이름 | 필수 여부 |
|---|---|---|---|
| < | < | less than | 항상 필수 |
| & | & | ampersand | 항상 필수 |
| > | > | greater than | 권장 |
| " | " | quote | 속성값 안에서 필수 |
| ' | ' | apostrophe | 속성값 안에서 필수 |
이스케이프할 문자가 너무 많다면 <![CDATA[ ... ]]>로 감싸는 편이 깔끔합니다. HTML 조각이나 스크립트를 XML 안에 넣을 때 주로 씁니다.
⚠️ 자주 하는 실수
XML은 대소문자를 구분합니다. <Item>과 </item>은 다른 태그로 인식되어 파싱이 실패합니다. 또한 <, &는 반드시 <, &로 이스케이프해야 합니다.
자주 묻는 질문
well-formed XML과 valid XML의 차이는?▼
well-formed는 문법적으로 올바른 XML(태그 열고 닫기, 대소문자 일치 등)이고, valid는 DTD나 XSD 스키마를 만족하는 XML입니다. 이 도구는 well-formed 여부를 검사합니다.
XML 선언(<?xml ...?>)은 꼭 필요한가요?▼
필수는 아니지만 권장됩니다. 인코딩을 명시하지 않으면 기본값(UTF-8)이 적용되며, 다른 인코딩 사용 시 반드시 선언해야 합니다.
CDATA 섹션은 언제 사용하나요?▼
HTML이나 특수문자(<, >, &)가 포함된 텍스트를 이스케이프 없이 그대로 넣고 싶을 때 <![CDATA[ ... ]]>로 감쌉니다.
입력한 XML이 서버로 전송되나요?▼
아니요. 파싱과 포맷팅 모두 브라우저 안에서 처리되며 내용이 서버로 전송되거나 저장되지 않습니다. 사내 설정 파일이나 API 응답도 안전하게 붙여넣을 수 있습니다.
"엔티티를 찾을 수 없다"는 오류가 나요.▼
값 안에 &가 그대로 들어간 경우가 대부분입니다. XML에서 &는 엔티티 시작 문자라 반드시 &로 써야 합니다. URL의 쿼리스트링을 그대로 넣을 때 자주 발생합니다.
압축(Minify)하면 XML 의미가 바뀌지 않나요?▼
태그 사이의 들여쓰기용 공백만 제거하므로 구조는 그대로입니다. 다만 요소 내부 텍스트의 공백이 의미를 갖는 문서라면 결과를 한 번 확인하는 것이 좋습니다.