MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

XML TOML 변환기

XML 설정이나 내보내기 파일을 중첩 요소는 테이블로, 반복 요소는 테이블 배열로 바꾼 TOML 1.0으로 변환합니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제

XML → 데이터 매핑

속성은 이 문자로 시작하는 키가 되어 id="1"은 @id가 됩니다. 비우면 속성 이름 그대로 씁니다.

속성이나 자식 요소와 함께 있는 텍스트는 이 키에 담습니다.

끄면 <item>이 하나일 땐 객체, 여러 개일 땐 배열이 됩니다. 켜면 개수와 상관없이 구조가 같습니다.

끄면 모든 값이 문자열로 남습니다. 켜면 true/false, 정수, 소수는 해당 타입이 되고 007이나 긴 ID는 문자열로 둡니다.

XML 입력

21줄491byte

결과

⌘/Ctrl + Enter로 복사
결과 · config.toml
[order]
"@id" = 4821
"@status" = "shipped"
total = 87.9
shipped_at = "2026-03-14T09:30:00Z"
tracking = ""

[order.customer]
"@id" = 77
"@vip" = true
name = "Ada Lovelace"
email = "ada@example.com"

[order.items]

[[order.items.item]]
"@sku" = "KB-100"
"@qty" = 1
name = "Keyboard"
price = 49.9

[[order.items.item]]
"@sku" = "MS-220"
"@qty" = 2
name = "Mouse"
price = 19
키17
테이블5
크기371byte

레거시 애플리케이션의 설정 파일처럼 XML에 들어 있는 설정을 Cargo, pyproject.toml, 여러 신규 도구가 쓰는 TOML로 옮길 때 쓰는 XML TOML 변환기입니다. 페이지 안의 엄격한 XML 1.0 파서로 문서를 읽고, 공통 XML 매핑 규칙으로 데이터 트리를 만든 뒤 TOML 1.0 텍스트로 씁니다. XML에 오류가 있으면 줄과 열로 알려 줍니다.

TOML은 XML보다 형식이 엄격해서 변환도 TOML의 관용을 따릅니다. 중첩 요소는 [app.server] 같은 테이블이 되고, 필드를 가진 반복 요소는 테이블 배열 [[app.db]], 텍스트만 가진 반복 요소는 tag = ["x", "y"] 같은 인라인 배열이 되며, 단순한 단어가 아닌 키는 따옴표로 감쌉니다. XML → 데이터 매핑 패널에서 속성 접두사, 텍스트 키, 배열 규칙, 타입 해석을 고를 수 있습니다.

최대 20 MiB까지 브라우저 안에서 로컬로 처리합니다. TOML 전용 옵션은 없고 출력은 항상 TOML 1.0이며, 복사하거나 config.toml로 내려받을 수 있습니다.

사용 방법

  1. XML 붙여넣기

    문서를 붙여 넣거나 예제를 고르세요. XML이 올바르지 않으면 줄과 열이 적힌 메시지가 결과를 대신합니다.

  2. 속성 모양 정하기

    기본 @ 접두사에서는 속성이 따옴표 키 "@name"이 됩니다. XML → 데이터 매핑 패널에서 접두사를 비우면 name = "demo" 같은 맨 키가 됩니다.

  3. 배열과 타입 동작 선택

    항상 배열을 끄면 요소 하나는 테이블, 여러 개는 배열이 됩니다. 모든 값이 따옴표 붙은 문자열이어야 하면 숫자·불리언으로 해석을 끄세요.

  4. 테이블 배치 읽기

    요소의 단순 값이 [table] 헤더 아래에 먼저 나오고, 그 뒤에 자식 테이블과 테이블 배열이 옵니다. TOML이 요구하는 순서입니다.

  5. 복사 또는 다운로드

    TOML을 복사하거나 config.toml로 내려받으세요. 출력 아래 통계에 키와 테이블 수가 표시됩니다.

작동 원리

XML 구조가 TOML로 매핑되는 방식

TOML 1.0에는 키/값 쌍, 테이블, 테이블 배열이 있습니다. 자식이 모두 텍스트인 요소는 키/값 쌍의 테이블이 됩니다. 자식이 있는 반복 요소는 발생할 때마다 [[app.db]] 형태의 테이블 배열이 됩니다. 텍스트만 가진 반복 요소는 배열 값이 되는데, TOML 1.0은 타입이 섞인 배열을 허용하므로 1, x, true가 한 배열에 들어갈 수 있습니다.

루트 요소 이름이 항상 첫 테이블이어서 <app> 문서는 [app]을 만듭니다. 각 테이블 안에서는 TOML 규격대로 스칼라 키를 하위 테이블보다 먼저 쓰므로, 출력의 키 순서가 XML의 요소 순서와 다를 수 있습니다.

XMLTOML
<a><b>x</b></a>[a] b = "x"
<a><c><d>1</d></c></a>[a.c] d = 1
<a><c><d>1</d></c><c><d>2</d></c></a>[[a.c]] d = 1 과 [[a.c]] d = 2
<a><v>1</v><v>x</v></a>v = [1, "x"]
<a><b/></a>b = ""
<a id="5"/>"@id" = 5

문자열, 따옴표, TOML이 담지 못하는 것

글자, 숫자, 하이픈, 밑줄로만 이루어진 키는 그대로 쓰고, @id, #text, dc:creator를 포함한 나머지는 따옴표로 감쌉니다. 문자열은 큰따옴표 기본 문자열로 쓰며 따옴표, 역슬래시, 제어 문자는 이스케이프되므로, 여러 줄 XML 텍스트는 \n이 들어간 한 문자열이 됩니다.

XML에는 null이 없으므로 TOML에 null이 없다는 점은 여기서 문제가 되지 않습니다. 빈 요소는 빈 문자열이 됩니다. 2026-03-14T09:30:00Z 같은 날짜 모양의 텍스트는 공통 매핑이 TOML 날짜·시간 값을 만들지 않으므로 문자열로 남습니다. XML의 주석과 처리 명령은 옮겨지지 않습니다.

실제 예시

속성과 반복 요소가 있는 주문
입력
<order id="1042" paid="true"><customer>Ada</customer><item sku="A1" qty="2">Pen</item><item sku="B7" qty="1">Ink</item><total>24.50</total></order>
출력
[order]
"@id" = 1042
"@paid" = true
customer = "Ada"
total = 24.5

[[order.item]]
"@sku" = "A1"
"@qty" = 2
"#text" = "Pen"

[[order.item]]
"@sku" = "B7"
"@qty" = 1
"#text" = "Ink"

order의 스칼라 키가 먼저 나오고, 반복 요소마다 [[order.item]] 테이블이 하나씩 생깁니다. total이 item 테이블보다 위로 옮겨진 점에 주의하세요.

테이블과 반복 블록이 있는 설정
입력
<app name="demo" debug="false" port="8080"><db><host>a</host><pool>5</pool></db><db><host>b</host><pool>10</pool></db><tag>x</tag><tag>y</tag></app>
출력
[app]
name = "demo"
debug = false
port = 8080
tag = ["x", "y"]

[[app.db]]
host = "a"
pool = 5

[[app.db]]
host = "b"
pool = 10

설정은 속성 접두사를 비운 상태입니다. db 요소 둘은 테이블 배열이 되고 텍스트만 가진 tag 요소 둘은 인라인 배열이 됩니다.

섞인 타입과 빈 요소
입력
<a><v>1</v><v>x</v><v>true</v><b/></a>
출력
[a]
v = [1, "x", true]
b = ""

TOML 1.0은 타입이 섞인 배열을 허용하므로 값이 각자의 타입을 유지합니다. 빈 요소는 키가 빠지는 것이 아니라 빈 문자열이 됩니다.

따옴표 문자열과 이스케이프
입력
<app><title>He said "hi"
bye</title><path>C:\tmp</path><zip>02134</zip><when>2026-03-14T09:30:00Z</when></app>
출력
[app]
title = "He said \"hi\"\nbye"
path = "C:\\tmp"
zip = "02134"
when = "2026-03-14T09:30:00Z"

따옴표, 줄바꿈, 역슬래시가 이스케이프되고 우편번호와 날짜는 문자열로 남습니다.

자주 하는 실수

  • 키 순서가 바뀜

    TOML은 테이블의 단순 키가 하위 테이블보다 먼저 나오도록 요구하므로, XML에서 자식 요소 뒤에 있던 값도 그 위에 쓰입니다. 출력 순서가 XML 순서를 그대로 반영한다고 가정하지 마세요.

  • 하나면 테이블, 여럿이면 배열

    <db>가 한 번이면 [app.db], 두 번이면 [[app.db]]입니다. 자식 요소는 항상 배열로를 켜지 않으면 db를 목록으로 읽는 코드가 한 개짜리 경우에 실패합니다. 이 스위치는 한 번만 나와도 목록으로 씁니다.

  • 숫자의 끝자리 0이 사라짐

    타입 해석이 켜져 있으면 24.50은 24.5, 1.10은 1.1로 쓰입니다. 글자 그대로 남아야 하는 버전이나 가격이 있으면 해석을 끄세요.

  • 혼합 콘텐츠와 주석은 사라짐

    자식 요소 옆의 텍스트는 "#text"로 따옴표가 붙은 텍스트 키에 모입니다. XML 주석과 처리 명령은 버려집니다.

  • 속성 키는 기본적으로 따옴표가 붙음

    @ 접두사에서는 모든 속성 키에 따옴표가 필요해서 싫어하는 TOML 소비자가 많습니다. 접두사를 비우면 맨 키가 되지만, 이름이 같은 속성과 자식 요소가 한 배열로 합쳐집니다.

자주 묻는 질문

출력은 어떤 TOML 버전인가요?

도구가 직접 작성하는 TOML 1.0입니다. 1.0이 허용하는 타입 혼합 배열도 그대로 만들어 냅니다.

반복되는 XML 요소는 TOML에서 어떻게 쓰이나요?

자식이 있는 요소는 발생할 때마다 [[name]] 형태의 테이블 배열이 됩니다. 텍스트만 있는 반복은 tag = ["x", "y"] 같은 인라인 배열이 됩니다.

XML 속성은 어떻게 되나요?

속성 접두사(기본 @)가 붙은 키가 되고 TOML에서는 따옴표가 필요합니다. 맨 키를 원하면 매핑 패널에서 접두사를 비우세요.

TOML 날짜나 날짜시간 값이 만들어지나요?

아니요. 날짜처럼 보이는 텍스트는 문자열로 남습니다. 타입이 붙는 것은 불리언, 정수, 소수뿐이고 타입 해석이 켜져 있을 때만 그렇습니다.

루트에 텍스트가 있어도 되나요?

됩니다. 속성이나 자식 옆의 텍스트는 텍스트 키 "#text"에 들어가고, 텍스트만 가진 루트는 a = "hi" 같은 최상위 키 하나가 됩니다.

파일이 업로드되나요?

아니요. 파싱과 TOML 생성이 브라우저 안에서 로컬로 실행되며 최대 20 MiB까지 처리합니다.

마지막 업데이트: