§

입력

모드
§

출력

한국의 팀은 스택의 두 부분이 사용하는 형식에 동의하지 않을 때마다 XML과 JSON을 연결합니다. 카카오페이와 KB국민은행 같은 금융 기관은 HL7 FHIR 리소스를 XML과 JSON 모두로 발행합니다. 레거시 SOAP 서비스는 여전히 React 프론트엔드가 JSON으로 원하는 XML 봉투를 반환합니다. AWS SNS, SQS 본문, 건강보험공단 API, 국민연금 데이터 피드도 Snowflake나 BigQuery에 들어가기 전에 엔지니어들이 JSON으로 변환하는 XML로 도착합니다. 해결책은 모든 경우에 동일합니다: 어디에도 전송하지 않고 새 페이로드에서 재실행할 수 있는 빠른 로컬 변환기입니다.

XML ↔ JSON 변환이란 무엇인가요?

XML(확장 가능한 마크업 언어)은 계층적 데이터를 위한 태그 기반 텍스트 형식입니다. SOAP 웹 서비스, RSS 및 Atom 피드, HL7 FHIR 건강 기록, sitemap.xml 파일, Maven, Spring, Android Gradle과 함께 제공되는 구성 파일에서 볼 수 있습니다. JSON(JavaScript 객체 표기법, RFC 8259로 정의)은 동일한 종류의 중첩 데이터를 설명하지만 태그를 열고 닫는 대신 중괄호와 배열을 사용합니다. JSON은 오늘날 거의 모든 REST API가 사용하는 형식이며 모든 브라우저 런타임의 네이티브 값 형태입니다. 두 형식 간의 변환은 속성, 혼합 콘텐츠, 반복 자식, CDATA를 만날 때까지 사소하게 들립니다. 커스텀 정규식은 잘못된 답이고; 실제 파서가 올바른 답입니다. 이 도구는 실제 파서(fast-xml-parser)를 제공하고 브라우저에서 실행하므로, 레거시 SOAP 서비스가 반환하는 XML 봉투를 붙여넣고 Redux 스토어에 바로 넣을 수 있는 JSON 객체로 변환하거나, REST 클라이언트에서 조립한 JSON 페이로드를 엔터프라이즈 엔드포인트가 여전히 기대하는 XML 형태로 되돌릴 수 있습니다.

XML ↔ JSON 매핑은 어떻게 작동하나요?

모든 변환은 번들된 fast-xml-parser 라이브러리(MIT, 4.x 버전)를 사용하여 브라우저에서 로컬로 실행됩니다. 고수준 매핑 규칙은:

  1. 요소에서 키로: 각 XML 요소 이름이 JSON 객체 키가 됩니다. <user><name>Alice</name></user>{"user":{"name":"Alice"}}로 매핑됩니다.
  2. 속성에서 접두사 키로: 속성은 선택한 접두사를 앞에 붙인 키 아래에 저장됩니다. 접두사 @를 사용하면 <user id="1">{"user":{"@id":"1"}}를 생성합니다.
  3. 텍스트 콘텐츠에서 텍스트 노드 키로: 요소에 속성과 텍스트가 모두 있을 때 텍스트는 선택한 텍스트 노드 키 아래에 들어갑니다. 키 #text를 사용하면 <price currency="USD">9.99</price>{"price":{"@currency":"USD","#text":"9.99"}}를 생성합니다.
  4. 반복 자식에서 배열로: 반복 자식 태그에 배열 강제 적용이 켜져 있으면 같은 이름의 여러 형제 요소가 JSON 배열로 축소됩니다. <items><item>A</item><item>B</item></items>{"items":{"item":["A","B"]}}가 됩니다.
  5. CDATA 섹션: <![CDATA[…]]> 내부의 원시 텍스트는 왕복 과정에서 꺾쇠 괄호와 앰퍼샌드가 다시 이스케이프되지 않도록 #cdata 키 아래에 보존됩니다.
  6. JSON에서 XML로의 변환은 매핑을 역전합니다: 객체 키는 요소가 되고, 접두사가 붙은 키는 속성이 되며, 배열은 반복 형제 요소로 확장됩니다.

이 도구로 XML과 JSON을 변환하는 이유

  • 데이터가 사용자의 기기에 머뭅니다. 모든 파싱과 모든 빌드가 이 페이지의 JavaScript 컨텍스트에서 실행됩니다. FHIR 환자 번들, SOAP 인증 봉투, 독점적인 구성 파일, 청구 내보내기 — 코드 경로에 업로드 단계가 없기 때문에 서버에 도달하는 것은 없습니다. 네트워크 패널을 열고 확인하세요.
  • 레거시 SOAP을 REST 우선 프론트엔드로 가져오는 것이 가장 일반적인 요청입니다. 은행이나 보험사는 수년간 폐기되지 않을 SOAP 엔드포인트를 노출합니다; 그것을 호출하는 React나 Vue 앱은 XML을 배우고 싶지 않습니다. 봉투를 붙여넣고, 속성이 접두사로 붙고 네임스페이스가 보존된 JSON을 돌려받고, Body 내용을 상태 스토어에 넣으세요.
  • RSS, Atom, 사이트맵 소비자도 혜택을 받습니다. 팟캐스트 디렉토리, 뉴스 애그리게이터, 또는 sitemap.xml을 수집하는 내부 대시보드는 XML 파서를 작성하는 것을 완전히 건너뛸 수 있습니다. 피드를 한 번 변환하고, JSON 배열로 작업하면 클라이언트 코드가 이미 사용하는 언어를 유지합니다.
  • 구성 내보내기가 목록을 완성합니다. Maven, Spring, Android Gradle, 구식 Ant 빌드는 모두 XML을 출력하고; 반대편의 클라우드 네이티브 툴링(Terraform, Ansible, GitHub Actions, cloud-init)은 JSON 또는 YAML을 읽습니다. 서드파티 의존성이 있는 Python 스크립트를 실행하는 대신 브라우저에서 변환하세요, 알 수 없는 웹 서비스에 붙여넣는 것이 불가능한 에어갭 환경에서 특히 유용합니다.

XML ↔ JSON 변환의 주요 활용 사례는 무엇인가요?

XML과 JSON 연결은 통합 엔지니어링, API 도구, 데이터 엔지니어링에서 등장합니다. 몇 가지 패턴이 워크로드를 지배합니다:

  • SOAP에서 REST로 브리징: 레거시 금융 또는 보험 API가 반환하는 SOAP 봉투에서 Body 페이로드를 꺼내 서버 측 프록시 레이어 없이 React나 Vue 프론트엔드가 소비할 수 있는 JSON으로 변환합니다.
  • FHIR 건강 기록: HHS/ONC 및 NHS Digital이 임상 데이터 교환에 요구하는 형식인 HL7 FHIR XML 번들을 분석가가 쿼리할 수 있는 MongoDB Atlas 컬렉션이나 PostgreSQL JSONB 컬럼에 로드하기 위해 JSON으로 변환합니다.
  • 사이트맵 및 피드 처리: sitemap.xml이나 RSS/Atom 피드를 의존성으로 XML 파서를 가져오지 않고 커스텀 인덱서, Slack 봇, 또는 대시보드 위젯이 항목을 반복할 수 있는 JSON 배열로 변환합니다.

XML ↔ JSON 왕복 변환은 어떻게 생겼나요?

작은 예를 들어보겠습니다. 입력에 <user id="1"><name>Alice</name></user>를 붙여넣고, 속성 접두사를 @로 설정하고, 모드를 XML to JSON으로 두고, 변환을 누르세요. 출력은 {"user":{"@id":"1","name":"Alice"}}입니다. 모드를 JSON to XML로 뒤집고, 그 JSON을 다시 붙여넣고, 들여쓰기를 공백 2칸으로 설정하고, 다시 변환을 누르세요. <user id="1">\n <name>Alice</name>\n</user>를 얻을 것입니다 — 원본과 구조적으로 동일합니다. 왕복 변환에서 보장되지 않는 유일한 것은 속성 순서인데, JSON 객체 키는 명세상 순서가 없기 때문입니다.

이 XML ↔ JSON 변환기는 동일한 오리진에 번들된 fast-xml-parser@4를 제공하고, 속성, CDATA, 반복 자식 태그, 네임스페이스 접두사를 처리하며, 페이지가 로드된 후 오프라인에서도 계속 작동합니다. 업로드 단계 없음, CDN 프록시 없음, 분석 비컨 없음, 어떤 종류의 원격 측정도 없습니다. 입력과 출력의 모든 바이트는 브라우저에 머뭅니다 — 페이로드가 FHIR 환자 번들, SOAP 인증 봉투, 또는 팀 외부에서 누구도 보면 안 되는 다른 어떤 데이터 형태일 때 바로 그것이 원하는 것입니다.