Swift to XML 변환기
Swift struct나 값이 채워진 인스턴스를 붙여넣으면 깔끔한 XML을 돌려드립니다.
이 도구가 하는 일
Swift struct를 그대로 옮긴 XML을 직접 손으로 써야 했던 적이 있다면 — plist용이든, 레거시 ERP와 붙는 SOAP 클라이언트든, XMLParser용 테스트 픽스처든 — 중괄호를 얼마나 많이 두드려야 하는지 아실 겁니다. 여기에 Swift를 붙여넣으면 잘 구성된 XML이 한 번에 돌아옵니다. 단일 struct든, 여러 struct와 enum이 든 파일이든, 값이 채워진 let order = Order(...) 인스턴스든 결과는 똑같습니다 — 모든 프로퍼티가 보존된 완전한 XML 문서입니다.
단순한 문자열 치환이 아닙니다. 변환기는 Swift가 실제로 어떻게 직렬화되는지를 압니다 — 대체로 Codable 기반 XMLEncoder가 처리하는 방식과 같습니다. Decimal 값은 그대로 숫자 텍스트로, Date는 ISO-8601 문자열로, UUID는 표준 8-4-4-4-12 형식의 hex 문자열로 나옵니다. nil인 Optional<T>는 요소가 사라지지 않고 빈 요소로 출력됩니다. 배열은 일관된 컨테이너 모양을 따릅니다 — 각 배열은 원소 타입을 이름으로 쓴 자식을 하나씩 가진 래퍼 요소가 됩니다.
Coding 커스터마이징도 그대로 반영됩니다. 중첩된 enum CodingKeys: String, CodingKey가 출력의 프로퍼티 이름을 리매핑하므로, struct는 그대로 두고도 orderId를 XML에서 OrderId로 뽑을 수 있습니다. 중첩 struct와 enum은 인라인으로 펼쳐집니다. 여러 타입을 붙여넣으면 각자 형태를 유지한 채 출력에 나타납니다 — 이 변환기는 Swift API Design Guidelines와 동일한 큰 틀의 설계 목표를 따르기 때문에 이름과 케이싱이 예측 가능합니다.
사용법
세 단계면 끝입니다. 다섯 줄짜리 struct를 붙여넣든 모델 파일 하나 통째로든 방법은 같습니다.
Swift 붙여넣기(또는 샘플 시도)
왼쪽 에디터에 Swift를 그대로 붙여넣으세요. struct, 연관값이 있는 enum, 값이 채워진 let 인스턴스, 여러 타입이 든 파일 — 전부 괜찮습니다. 실제 예제를 먼저 보고 싶으면 Load Sample을 클릭하세요.
import 구문을 지우거나 @propertyWrapper를 떼내거나 Swift 문법을 정리할 필요가 없습니다. Xcode에서 보이는 그대로 붙여넣으세요.
변환 버튼 누르기
녹색 변환 버튼을 클릭합니다. 도구가 Swift를 읽고 모든 타입과 프로퍼티를 보존한 채 XML을 한 번에 만들어 냅니다. 처리 중에는 짧은 로딩 표시가 뜹니다.
XML 복사하기
오른쪽 패널이, 표준을 준수하는 XML 파서(XMLParser, lxml, System.Xml, 뭐든)가 그대로 받아들일 수 있는, 들여쓰기된 잘 형성된 XML로 채워집니다. plist, SOAP 바디, 테스트 픽스처에 곧바로 붙여 넣으면 됩니다.
이럴 때 정말 유용합니다
iOS / macOS plist 생성
Swift 설정 struct에서 바로 Xcode에 넣을 수 있는 Info.plist 스타일의 XML 문서를 뽑으세요 — <code><key></key></code> 쌍을 손으로 타이핑할 필요도, 공백 버그도 없습니다. 디코딩 쪽은 Apple의 <a href="https://developer.apple.com/documentation/foundation/propertylistserialization" target="_blank" rel="noopener">PropertyListSerialization</a> API와 잘 맞물립니다.
Apple 플랫폼의 SOAP 클라이언트
Swift 리퀘스트 타입을 SOAP으로 앱에서 내보내야 할 때 — struct를 붙여넣고, XML 바디를 SoapUI나 Postman에 떨구고, envelope을 손으로 쓰지 않고도 계약을 검증할 수 있습니다.
테스트 픽스처 시딩
유닛 테스트의 값이 채워진 <code>let order = Order(...)</code>를 XCTest 통합 테스트, mock 서버, 여전히 XML을 쓰는 백엔드 시스템용 XML seed 파일로 바꿉니다.
문서를 동기 상태로 유지
실제 Swift 모델에서 바로 README, 사내 위키, XSD 기반 스키마 문서용 XML 예제를 생성해, 문서가 코드와 어긋나지 않게 합니다.
자주 묻는 질문
struct를 여러 개 한 번에 붙여넣을 수 있나요?
네 — 파일 통째로 붙여넣으세요. 최상위 struct나 enum 각각이 중첩 타입을 펼쳐내고 기본값도 채운 상태로 나옵니다. 조용히 드롭되는 건 없습니다.
CodingKeys를 인식하나요?
네. 중첩된 enum CodingKeys: String, CodingKey는 XML 출력의 프로퍼티 이름을 리매핑합니다 — case orderId = "OrderId"는 <orderId>가 아니라 <OrderId>를 내보냅니다. CodingKeys에 없는 프로퍼티는 Swift 이름으로 떨어집니다. 실제 Codable 동작과 같습니다.
Decimal, Date, Optional은 어떻게 처리되나요?
Decimal은 그대로 숫자 텍스트로 나옵니다. Date는 ISO-8601 문자열, UUID는 표준 8-4-4-4-12 형식의 hex 문자열이 됩니다. nil인 Optional<T>는 사라지지 않고 빈 요소가 됩니다 — XSD로 검증하는 소비자 입장에서 모양이 일관되게 유지됩니다.
연관값이 있는 enum과 배열은요?
연관값이 있는 enum은 case를 알려주는 디스크리미네이터 속성과, 연관값을 위한 자식 요소를 함께 내보냅니다 — 라운드 트립하기에 충분합니다. 배열은 원소 타입의 이름을 가진 자식을 하나씩 가진 컨테이너 요소가 됩니다. Dictionary<K,V>는 <Entry><Key/><Value/></Entry>의 컨테이너가 됩니다.
붙여넣은 코드가 저장되나요?
코드는 변환을 위해 백엔드로 전송되지만 보관하지 않습니다 — 페이로드를 로깅하지 않습니다. 온라인 도구가 다 그렇듯, 정말 민감한 코드는 붙여넣기 전에 한 번 훑어봐 주세요.
property wrapper, 프로토콜, computed property가 섞여 있으면요?
property wrapper는 출력에서 내부 값으로 언래핑됩니다. 프로토콜은 모양을 정의할 뿐 내용은 아니므로 XML을 직접 만들어내지는 않지만, 준수 타입은 만들어냅니다. computed property는 상태가 아니라 파생값이라 건너뜁니다. 코드에 문법 에러가 있다면 눈에 띄는 것부터 먼저 고치세요 — 파서는 너그럽지만 초능력은 없습니다.
함께 쓰면 좋은 도구
Swift to XML은 퍼즐의 한 조각일 뿐입니다. 이 도구들과 잘 어울립니다: