SS 툴박스
SS 툴박스
모든 데이터는 로컬에서 처리됩니다

XML → JSON 변환기: SOAP 응답, API 페이로드, 태그 속성

SOAP 응답이나 XML API 페이로드를 브라우저에서 JSON으로 읽고, JSON 객체를 태그와 속성으로 다시 쓸 수 있습니다. compact 매핑은 일정하지만 자식 요소가 하나인지 동일 이름이 여러 개인지에 따라 JSON 구조가 달라지고, 혼합 텍스트 순서는 유지되지 않습니다.

이 XML ↔ JSON 변환기의 동작

  1. 태그는 키, 속성은 _attributes로

    각 요소는 태그 이름의 키로 매핑됩니다. <user id="7">Ann</user>는 { user: { _attributes: { id: "7" }, _text: "Ann" } }가 되어 속성과 텍스트가 자식 태그와 섞이지 않습니다.

  2. 자식이 하나면 객체, 둘이면 배열

    <item>이 하나면 객체로 남고, 같은 <item>이 두 개면 JSON 배열이 됩니다. 응답이 두 건에서 한 건으로 줄면 구조가 바뀌므로 클라이언트에서 두 형태를 모두 처리해야 합니다.

  3. 선언, 주석, CDATA는 전용 키

    _declaration, _doctype, _comment, _cdata가 루트 요소와 같은 수준에 나타납니다. CDATA는 원시 텍스트로 읽히며 JSON → XML 변환 시 네 가지 모두 다시 기록됩니다.

  4. 텍스트는 남지만 위치는 사라짐

    compact 모드에서 자식 요소 양쪽 텍스트는 하나의 _text 배열로 합쳐집니다. <r>before<a>1</a>after</r>는 _text: ["before", "after"]가 되고, 다시 쓰면 beforeafter<a>1</a>가 됩니다. 완전한 왕복이 필요하면 요소만 있는 내용을 사용하세요.

  5. 네임스페이스와 특수 문자 처리

    xmlns / xmlns:p는 일반 속성으로 유지되고, 텍스트의 <, &, >는 출력 시 이스케이프되며 읽을 때 복원됩니다. 파일과 변환은 모두 로컬에서 이루어지고 업로드되지 않습니다.

XML ↔ JSON 변환 FAQ

데이터가 한 건만 올 때 JSON 구조가 바뀌는 이유?

xml-js compact 모드 때문입니다. 같은 이름의 자식이 반복되면 배열로, 하나만 있으면 객체로 유지됩니다. 두 건이면 item: [...], 한 건이면 item: {...}. 클라이언트에서 필드를 읽기 전에 배열로 정규화하세요.

속성과 요소 텍스트는 어떻게 표현되나요?

속성은 _attributes, 텍스트는 _text에 들어갑니다. 예: <user id="7">Ann</user> → { user: { _attributes: { id: "7" }, _text: "Ann" } }. <n>42</n>도 텍스트는 항상 문자열이며 빈 요소는 {}가 됩니다.

최상위 JSON 배열을 XML로 변환할 수 있나요?

안 됩니다. JSON 루트는 객체 하나여야 하며, 배열 루트는 <0><r>a</r></0><1><r>b</r></1> 같은 잘못된 요소 이름을 만듭니다. 배열을 루트 객체로 감싸세요(예: { "items": { "item": [...] } }).

선언, 주석, CDATA, DOCTYPE이 유지되나요?

유지됩니다. 전용 키 _declaration, _comment, _cdata, _doctype을 사용합니다. 읽을 때 _comment에는 양쪽 공백이 포함되고(예 " hi "), JSON → XML 시 <?xml ...?>, <!--hi-->, <![CDATA[...]]>, <!DOCTYPE r>가 다시 기록됩니다.

텍스트와 자식 요소가 섞이면 어떻게 되나요?

compact 모드는 텍스트 조각을 _text 배열로 모으고 위치 정보를 잃습니다. <r>before<a>1</a>after</r>는 { r: { _text: ["before", "after"], a: { _text: "1" } } }가 되고, 다시 쓰면 <r>beforeafter<a>1</a></r>가 됩니다. 순서를 유지하려면 비 compact 모드가 필요하지만 이 페이지는 compact 고정입니다.

네임스페이스와 특수 문자는 어떻게 처리되나요?

네임스페이스 선언은 일반 속성으로 유지되고(xmlns, xmlns:p), 접두사 태그는 키에 접두사를 유지합니다(p:a). 텍스트는 <, &, >를 출력 시 이스케이프하고 읽을 때 복원합니다. 속성 값은 따옴표만 이스케이프하므로 속성 안에 <나 &를 직접 쓰면 잘못된 XML이 될 수 있습니다.

무슨 오류가 나며, 데이터가 업로드되나요?

루트가 여러 개면 Text data outside of root node, 닫는 태그가 맞지 않으면 Unmatched closing tag, 루트가 스칼라면 The JSON structure is invalid로 실패하며 입력 상자가 빨간색이 되고 부분 출력은 기록되지 않습니다. 모든 처리는 브라우저에서 실행되고 파일은 업로드되지 않습니다.

관련 도구
SponsorMindElixir