cURL에서 XML로 변환기
cURL 명령을 붙여넣고 깔끔한 XML을 받으세요.
이 도구가 하는 일
Chrome DevTools에서 HTTP 호출을 녹화해 "Copy as cURL"을 누른 뒤, 같은 요청을 SOAP 벤더나 XML 중심의 테스트 하네스에 보내야 했던 적이 있다면 얘기가 뻔합니다 — 앉아서 헤더와 JSON 본문을 XML 요소로 손수 재구성하게 되죠. 이 도구는 그 과정을 건너뜁니다. cURL 명령을 백슬래시 줄 연결까지 포함해 그대로 붙여넣으면, 메서드, URL, 쿼리 파라미터, 헤더, 인증, 본문까지 요청 전체를 기술하는 well-formed XML 문서 하나가 나옵니다.
파서는 실제로 매일 쓰는 플래그를 이해합니다 — 메서드의 -X, 각 헤더의 -H, 본문의 -d/--data, 기본 인증의 -u, 쿠키의 -b, 그리고 가독성 좋은 멀티라인 명령에서 curl(1)이 쓰는 백슬래시-개행 연결까지요. 작은따옴표와 큰따옴표 인자 모두 처리되고, URL의 쿼리 문자열은 각 파라미터를 한 줄씩 볼 수 있도록 별도의 <QueryParams> 블록으로 분리됩니다.
요청이 JSON 본문을 담고 있다면, 중첩된 <Body> 요소로 임베드됩니다 — JSON 페이로드의 모든 필드가 각자의 XML 요소가 되고, 형태가 보존됩니다(객체는 중첩, 배열은 반복). form-urlencoded 본문은 키/값 쌍으로 분해됩니다. cURL이 인식하지 못하는 것 — 가끔 나오는 --compressed, -k, 또는 사용자가 넘긴 플래그 — 은 조용히 버려지지 않도록 <Options> 블록에 모아둡니다. 결과는 SOAP 클라이언트에 바로 넣거나, 테스트 픽스처로 커밋하거나, 문서에 붙여넣을 수 있는 XML 문서입니다.
사용 방법
세 단계입니다. cURL이 한 줄이든 백슬래시 연결로 스무 줄이든 똑같이 동작합니다.
cURL 붙여넣기(또는 샘플 시도)
왼쪽 에디터에 cURL 명령을 떨어뜨리세요. \ 줄 연결은 그대로 두고, 본문 주변의 작은따옴표도 유지하고, 어떤 플래그도 제거하지 마세요. 현실적인 HTTP 예제를 먼저 보고 싶다면 샘플 불러오기를 클릭하세요.
Chrome, Firefox, Safari 모두 네트워크 패널에 "Copy as cURL" / "Copy as cURL (bash)" 옵션이 있습니다 — 그 출력은 깔끔하게 붙여넣어집니다. Postman의 "Code snippets → cURL"도 잘 동작합니다.
변환 클릭
녹색 변환 버튼을 누르세요. 도구가 명령을 파싱해 메서드, URL, 쿼리 문자열, 헤더, 인증, 본문을 뽑아내고 한 번에 XML을 만듭니다. 처리 중에는 짧은 로딩 표시가 보입니다.
XML 복사
오른쪽 패널에는 HTTP를 이해하는 모든 도구나 표준 준수 XML 파서가 받아들일 수 있는, 들여쓰기된 well-formed XML이 채워집니다. SOAP 요청, 테스트 픽스처, API 문서에 곧바로 복사해 붙여넣으세요.
실제로 유용한 순간
DevTools 녹화로부터 SOAP 엔벨로프 생성
브라우저에서 REST 호출을 녹화했는데, 하류의 벤더는 여전히 SOAP만 씁니다. cURL을 붙여넣고 나온 XML을 엔벨로프 본문의 출발점으로 쓰면 메서드, URL, 페이로드 모양이 이미 잡혀 있습니다.
XML 중심 도구용 테스트 픽스처
SoapUI, ReadyAPI, 오래된 엔터프라이즈 테스트 키트는 XML 입력 파일을 원합니다. 잘 동작하는 cURL을 한 번 XML로 변환해 픽스처로 커밋하면, 두 가지 포맷을 손으로 유지할 필요가 없습니다.
레거시 엔터프라이즈 벤더 연동
아직 WSDL/SOAP나 XML 게이트웨이로 돌아가는 파트너 API는 cURL 스크립트를 받지 않습니다. 그쪽에서 바로 로드할 수 있는 XML 요청을 건네주면, "당신 엔드포인트가 실제로 무엇을 기대하느냐"는 왕복 질문을 줄일 수 있습니다.
API 문서와 스니펫
README에서 같은 요청을 두 가지 형태로 보여주고 싶을 때 — 개발자를 위한 cURL, 트래픽을 검토하는 운영팀을 위한 XML. cURL로부터 XML을 한 번 생성해 두 가지를 동기화하세요.
자주 묻는 질문
어떤 cURL 플래그가 지원되나요?
흔한 것들입니다: HTTP 메서드의 -X/--request, 각 헤더의 -H/--header(원하는 만큼 반복), 요청 본문의 -d/--data/--data-raw/--data-binary, 기본 인증의 -u/--user, 쿠키의 -b/--cookie. 플래그 전체 레퍼런스는 curl.se/docs/manpage.html에서 찾아볼 수 있습니다.
멀티라인 백슬래시 연결을 처리하나요?
네. 줄 끝의 \ 뒤에 개행이 오면 줄 연결로 취급됩니다 — bash와 cURL이 보는 방식 그대로입니다. DevTools나 터미널 히스토리에서 나온 그대로 붙여넣으세요. 먼저 한 줄로 합칠 필요 없습니다.
JSON 요청 본문은 어떻게 되나요?
JSON 본문(content-type application/json 또는 JSON으로 파싱되는 -d '{...}' 페이로드)은 <Body> 요소 안에 중첩 XML로 임베드됩니다 — 각 필드가 자기만의 요소가 되고, 객체는 중첩되고 배열은 반복됩니다. JSON 문법은 RFC 8259를 따르고, XML 출력에서도 형태가 1:1로 보존됩니다.
URL 인코딩 또는 폼 본문은요?
application/x-www-form-urlencoded 본문(예: -d 'user=ava&pwd=x')은 <Body> 안에서 개별 키/값 요소로 분해됩니다. URL 자체의 쿼리 문자열 파라미터는 각 파라미터를 명확히 볼 수 있도록 별도의 <QueryParams> 요소로 뽑힙니다. multipart(-F) 본문은 필드명과 값이 있는 파트마다 요소 하나로 표현됩니다.
Chrome이나 Firefox의 "Copy as cURL" 출력을 붙여도 되나요?
네 — 그게 주요 사용 사례입니다. Chrome의 "Copy as cURL (bash)", Firefox의 "Copy as cURL", Safari의 "Copy as cURL" 모두 깔끔하게 붙여집니다. 파서는 따옴표 스타일 차이를 무시합니다. Postman의 cURL 코드 스니펫 출력도 동작합니다.
파서가 인식하지 못하는 플래그가 있으면요?
알 수 없거나 이질적인 플래그(--compressed, -k, --resolve, 커스텀 롱 플래그)는 바닥에 버려지지 않고 XML 끝의 <Options> 블록에 모입니다. 그래야 원래 명령에 무엇이 있었는지 정확히 볼 수 있고, 받는 쪽에서 어떻게 표현할지 결정할 수 있습니다.
함께 쓸 만한 다른 도구
cURL에서 XML로는 퍼즐의 한 조각일 뿐입니다. 이 도구들과 잘 어울립니다: