it-box

JSON → XML 변환기

JSON 데이터를 XML로 변환합니다.

JSON → XML 변환기 도구 열기

JSON 객체를 XML 문자열로 바꿔 JSON 데이터를 XML을 요구하는 시스템에 넘길 때 씁니다.

사용 순서

  1. 입력 칸에 JSON을 넣습니다. 기본 예시는 _attributes 키로 속성을 지정한 객체입니다.
  2. 오른쪽에 XML 결과가 한 줄로 표시됩니다.
  3. 속성은 _attributes, 텍스트는 _text 키를 써야 원하는 모양이 나오는지 확인합니다.
  4. 결과를 복사해 XML을 받는 시스템에 넣고 파서로 한 번 읽어 봅니다.

예시

{"a":{"_attributes":{"x":"1.234"}}}는 <a x="1.234"/>가 됩니다.

한계

compact 규칙을 따르므로 _attributes, _text, _cdata, _comment, _declaration 같은 예약 키를 알아야 합니다. 최상위에 키가 둘 이상이면 루트 요소가 여럿이 되어 XML로 유효하지 않습니다. 속성 값에 < 문자가 들어 있으면 이스케이프되지 않아 결과가 깨질 수 있습니다. 결과는 줄바꿈 없이 한 줄로 나옵니다.

보안 주의

사용자가 입력한 값을 속성 값으로 넣을 때는 < 문자가 이스케이프되지 않는 점을 기억하세요. 외부 입력이 섞인 결과를 쓰기 전에 < 문자를 직접 치환하는 정제 단계를 거치세요.

배경 지식

XML은 태그 이름, 속성, 텍스트, 주석, CDATA 구역으로 문서를 구성합니다. JSON은 키와 값만 있으므로 어떤 키가 속성이고 어떤 키가 자식 요소인지 규칙으로 정해야 합니다. 이 도구는 xml-js의 compact 규칙을 씁니다. 같은 JSON 객체라도 변환 규칙이 다른 도구에서는 결과 XML이 다르게 나올 수 있습니다.

쓰기 규칙은 읽기 규칙의 반대입니다. 객체의 일반 키는 자식 요소가 되고, _attributes 객체의 키는 속성이 되며, _text는 요소 안의 텍스트가 됩니다. 배열은 같은 태그를 여러 번 반복한 형제 요소로 바뀝니다. 배열 항목이 객체이면 각 항목이 같은 태그로 반복되므로 항목마다 같은 키 구조를 갖추는 것이 좋습니다.

XML은 여는 태그와 닫는 태그의 짝이 맞아야 하고 문자 이스케이프 규칙이 엄격합니다. 한 군데라도 어긋나면 파서가 문서 전체를 거부합니다. 변환 결과가 보기에 맞아도 실제 파서에서 한 번 검사하는 것이 필요하며, 관공서 연계나 레거시 시스템에서는 특히 그렇습니다. 문자 하나의 실수도 파서에서는 전체 실패가 되므로 작은 샘플부터 확인하세요.

자주 묻는 질문

JSON 최상위에 키가 두 개 있으면 어떻게 되나요?

XML 문서는 루트 요소가 하나여야 합니다. 최상위 키가 둘이면 결과에 루트가 두 개 나와 파서 오류가 납니다. 두 키를 하나의 객체로 감싸서 넣으세요.

XML 선언을 넣으려면 어떻게 하나요?

입력 JSON의 최상위에 _declaration 키를 넣고 _attributes 안에 version과 encoding을 적으면 선언이 결과 맨 앞에 붙습니다. 선언을 넣지 않으면 자동으로 붙지 않습니다.

숫자나 불리언 값은 XML에서 어떻게 보이나요?

값은 텍스트 문자열로 바뀝니다. 예를 들어 {"a":{"_text":true}}는 <a>true</a>가 됩니다. 스키마가 숫자 형식을 요구하면 입력 값 자체가 그 형식과 맞는지 확인해야 합니다.