데이터 형식·구조화 데이터
XML 태그와 문자 참조 오류는 어떻게 고치나요?
사용할 도구
XML을 가져올 때 마지막 줄에서 실패하고 닫는 태그를 추가해도 다른 곳에서 멈출 수 있습니다. 레코드 하나로 줄여 요소의 시작과 끝을 따라가 보세요. 파서가 오류를 발견한 위치와 실수가 시작된 위치는 다를 수 있습니다.
XML 정리 도구에는 가상의 주문을 넣습니다. 앱에 돌려놓기 전에 번호, 이름, 금액이 유지되는지 확인하세요. 실제 고객 정보나 인증 정보는 필요 없습니다. 들여쓰기가 예뻐졌다고 주문 내용이나 수신 시스템 규격까지 맞는 것은 아닙니다.
태그를 추가하기 전에 이름 맞추기
<order id="A-17"><name>Notebook</title><amount>1200</amount></order>name으로 시작한 요소를 title로 닫았으므로 실행하면 실패해야 합니다. 마지막 order보다 이 불일치를 먼저 보세요. Notebook이라는 내용만으로 필드명을 추측하지 말고 수신 규격이 name과 title 중 무엇을 요구하는지 확인한 뒤 양쪽을 맞춥니다.
<order id="A-17"><name>Notebook</name><amount>1200</amount></order>수정 후 name과 amount가 order 안의 같은 단계에 있는지 봅니다. 도구는 필드의 의미를 결정하지 않습니다. 모르는 요소를 지워 오류를 없애면 필수 정보도 사라질 수 있습니다. 한 번에 하나씩 바꾸면 어떤 수정이 무엇을 해결했는지 알기 쉽습니다.
태그 개수가 맞아도 중첩은 틀릴 수 있습니다
<order><item><name>Notebook</item></name></order>이름마다 여는 태그와 닫는 태그가 하나씩 있어도 name 안에서 item이 먼저 닫힙니다. 가장 안쪽부터 name, item, order 순서로 닫아야 합니다. 개수만 세지 말고 계층을 따라가야 합니다.
실패하는 레코드와 정상 레코드를 비교하세요. 상품 하나는 되고 둘은 안 된다면 반복 부분의 경계를 살펴봅니다. 파일을 줄일 때 바깥 루트 요소는 남겨야 잘라내면서 만든 오류를 원래 문제로 오해하지 않습니다.
본문 문자와 마크업 기호 구별하기
<order><name>Pen & Paper</name><note>count < 10</note></order>Pen & Paper의 &는 &, count < 10의 <는 <로 나타냅니다. 상품명을 바꾸는 것이 아니라 XML에 담는 표기를 바꾸는 것입니다. 해석된 값의 문자와 XML 소스의 표기를 구별하세요.
이미 인코딩된 문서의 &를 모두 바꾸면 &가 &amp;가 되어 받는 쪽에 &라는 글자가 전달될 수 있습니다. 원문 인코딩과 완성된 XML 처리를 분리하세요. 정리 결과에 문자 참조가 남아도 오류라고 할 수 없으며, 이 화면은 값을 HTML로 표시하는 화면이 아닙니다.
속성 따옴표도 값의 경계입니다
<item code="A-17" note="Use "small" size"><name>Notebook</name></item>note는 큰따옴표로 감싸므로 내부 큰따옴표는 "로 씁니다. 경계가 일찍 끝나면 뒤의 문자가 다른 속성처럼 읽힐 수 있습니다. 단어 하나가 통과했다고 충분하지 않으니 공백, &, 따옴표를 각각 넣은 가상 값으로 시험하세요.
이 도구는 내부 파서의 지원 동작 안에서 문법을 확인하며 XML의 모든 적합성 조건을 증명하지 않습니다. HTML식 값 없는 속성을 XML에서도 쓸 수 있다고 생각하지 마세요. 정리 도구가 받아도 수신 파서는 거부할 수 있으므로 문서화된 규격과 실제 환경에서 확인해야 합니다.
금액이 비어도 태그는 올바를 수 있습니다
1200을 빈 값이나 twelve로 바꿔 보세요. 태그가 맞으면 정리는 성공할 수 있습니다. 금액이 필수인지 숫자여야 하는지 통화가 무엇인지는 문법만으로 알 수 없습니다. 구조 확인과 업무 필드 검증을 나누면 무엇을 확인했는지 명확해집니다.
이 화면은 XSD로 주문을 검증하거나 수신 시스템에 보내지 않습니다. DTD와 엔티티 선언은 읽지 않고 거부합니다. 오류를 피하려 DOCTYPE을 지우면 의미가 달라질 수 있으니 적절한 안전 환경에서 의존성을 확인하세요.
수정 결과에 값과 구조를 함께 남기기
정리 성공뿐 아니라 어떤 태그가 짝을 이루고 어떤 문자를 이스케이프했는지 설명하세요. A-17, Notebook, 1200을 확인한 뒤 &가 들어간 이름으로 반복합니다. 공백에 의미가 있는 혼합 콘텐츠나 서명된 XML은 정리한 결과를 다시 쓰기 전에 추가 검증이 필요합니다.
수정본과 함께 최소 실패 예제도 남기세요. 이름 불일치, 교차 중첩, 속성 따옴표를 따로 시험하면 이후 회귀 원인을 찾기 쉽습니다. 큰 운영 문서 대신 가상 재현 예제를 쓰면 문제 설명과 정보 보호를 함께 할 수 있습니다.