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

YAML XML 변환기

YAML 매핑이나 목록을 루트와 항목 요소를 정할 수 있고 텍스트가 이스케이프되며 요소 이름이 유효한 들여쓴 XML로 바꿉니다.

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

도구 작업 공간

예제

옵션

들여쓰기
문서

---로 구분된 여러 문서가 있는 파일을 배열로 만들지(자동), 항상 배열로 만들지, 첫 문서만 쓸지 정합니다.

YAML 1.1 병합 키: <<: *base는 앵커의 키를 복사하며, 옆에 직접 쓴 키가 우선합니다. 끄면 <<를 일반 키로 둡니다.

YAML 입력

21줄314byte

결과

⌘/Ctrl + Enter로 복사
결과 · data.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <id>4821</id>
  <status>shipped</status>
  <customer>
    <id>77</id>
    <name>Ada Lovelace</name>
    <email>ada@example.com</email>
    <vip>true</vip>
  </customer>
  <items>
    <item>
      <sku>KB-100</sku>
      <name>Keyboard</name>
      <qty>1</qty>
      <price>49.9</price>
    </item>
    <item>
      <sku>MS-220</sku>
      <name>Mouse</name>
      <qty>2</qty>
      <price>19</price>
    </item>
  </items>
  <total>87.9</total>
  <shipped_at>2026-03-14T09:30:00Z</shipped_at>
  <tracking/>
</root>
요소22
크기565byte

YAML XML 변환은 YAML로 쓴 설정이나 테스트 데이터를 XML만 읽는 시스템에 넘겨야 할 때 쓸모가 있습니다. 오래된 연동, SOAP 계열 페이로드, Ant나 Maven 스타일 파일이 그런 경우입니다. 변환기는 yaml 라이브러리(YAML 1.2 코어 스키마)로 YAML을 읽고 앵커, 별칭, 병합 키를 복사본으로 펼친 뒤 키마다 요소 하나를 가진 올바른 형식의 XML 1.0 문서를 씁니다.

매핑은 중첩 요소가 되고, 목록은 기본적으로 item이라는 이름의 자식 요소가 반복되며, null과 빈 값은 스스로 닫는 태그가 되고, 텍스트는 이스케이프됩니다. 루트 요소 이름, 배열 항목 요소 이름, 들여쓰기(공백 2칸, 4칸, 탭), <?xml ... ?> 선언을 쓸지 정할 수 있습니다. 입력하는 동안 결과가 갱신되며 data.xml로 내려받습니다.

모든 처리는 브라우저 탭 안에서 이루어지고 업로드되지 않습니다. 입력은 20MiB까지이고, 결과는 중첩 깊이 300단계까지 요소 단위로 생성됩니다.

사용 방법

  1. YAML 붙여 넣기 또는 예제 고르기

    문서를 붙여 넣거나 .yaml 파일을 편집기에 끌어다 놓고, 예제 칩을 고를 수도 있습니다. 루트는 매핑, 목록, 심지어 스칼라여도 되며 스칼라는 루트 요소의 텍스트가 됩니다.

  2. 루트와 항목 요소 이름 정하기

    루트 요소는 바깥 태그로 기본값은 root이고, 배열 항목 요소는 목록의 모든 항목에 쓰는 태그로 기본값은 item입니다. 둘 다 유효한 XML 이름이어야 하며 그렇지 않으면 오류가 납니다.

  3. 들여쓰기와 선언 고르기

    들여쓰기는 공백 2칸, 공백 4칸, 탭 중에서 고릅니다. 결과를 다른 문서 안에 넣거나 받는 쪽이 <?xml version="1.0" encoding="UTF-8"?>를 원하지 않으면 XML 선언 스위치를 끄세요.

  4. 문서와 병합 키 설정

    문서가 여러 개일 때 자동은 항목 목록으로 감싸고, 항상 배열은 하나여도 그렇게 하며, 첫 문서만은 첫 문서만 남깁니다. 병합 키(<<) 펼치기는 물려받은 키를 각 요소에 복사합니다.

  5. 알림 확인 후 복사

    XML 1.0이 담을 수 없는 문자를 바꿨거나 무한대나 아주 큰 정수를 텍스트로 썼다면 알림이 나옵니다. 그다음 XML을 복사하거나 data.xml로 내려받습니다.

작동 원리

YAML이 XML이 되는 방식

키마다 요소가 하나 생기고 값이 내용이 됩니다. 매핑은 키를 자식 요소로 중첩하고, 목록은 항목마다 항목 요소를 반복하며, 목록 안의 목록은 모든 단계에서 같은 항목 이름을 쓰므로 항목 요소 안에 항목 요소가 중첩됩니다. 최상위 목록은 루트 요소 바로 아래에 항목 자식을 둡니다.

스칼라는 텍스트로 쓰입니다. 숫자, 불리언, 문자열이 모두 요소 내용이 되고 &, <, >는 이스케이프됩니다. 변환기는 속성, 주석, CDATA를 만들지 않으므로 모든 값이 평범한 요소 텍스트입니다.

YAMLXML비고
service: api<service>api</service>
port: 8080, ok: true<port>8080</port>, <ok>true</ok>모든 값은 텍스트
region: ~ 또는 빈 목록·빈 매핑<region/>스스로 닫는 요소
tags: [web, edge]<tags>와 <item> 자식 둘항목 이름은 바꿀 수 있음
limits: {cpu: 0.5}<limits><cpu>0.5</cpu></limits>중첩 요소
text: "a & b"<text>a &amp; b</text>텍스트는 이스케이프
ratio: 1.0<ratio>1.0</ratio>쓴 모양 그대로 텍스트로 적음
v: .inf<v>.inf</v>알림과 함께 텍스트로 씀
when: 2026-03-14<when>2026-03-14</when>YAML 1.2에서 문자열

유효하지 않은 요소 이름

XML 이름은 글자나 밑줄로 시작해야 하고 그 뒤에는 글자, 숫자, 점, 하이픈, 밑줄이 올 수 있으며, 대소문자와 관계없이 xml로 시작할 수 없습니다. YAML 키는 무엇이든 될 수 있으므로 조건에 맞지 않는 키는 실패하는 대신 이스케이프됩니다. 문제 있는 글자마다 소문자 16진수 코드 포인트를 넣은 _x<hex>_가 되어 my key는 my_x20_key, a<b는 a_x3c_b입니다.

3d처럼 숫자로 시작하는 키에는 밑줄이 앞에 붙어 _3d가 되고, xml로 시작하는 키에도 붙어 _xmlfoo가 됩니다. 원래 이름을 버리지 않고 인코딩하므로 몰래 이름이 바뀌는 일이 없고, 받는 쪽에서 이스케이프를 되돌릴 수 있습니다.

앵커, 병합 키, 여러 문서

XML에는 다른 요소를 가리키는 방법이 없으므로 모든 별칭이 전체 복사본으로 쓰입니다. <<: *base는 기본으로 펼쳐져 << 옆에 쓴 키가 우선하고 소스 목록에서는 앞쪽 소스가 이깁니다. 병합 키 펼치기를 끄면 _x3c__x3c_라는 자식 요소가 별칭 매핑을 담는데, 엄격한 YAML 1.2 로더가 무엇을 받는지 볼 때만 쓸모가 있습니다.

---로 나뉜 여러 문서는 목록이 되어 문서마다 루트 아래 item 요소 하나가 됩니다. 끝의 ---는 문서가 아닙니다. 엔티티로도 XML 1.0이 담을 수 없는 제어 문자는 U+FFFD로 바뀌고 알림이 개수를 알려 줍니다.

실제 예시

목록과 null이 있는 매핑
입력
service: api
port: 8080
tags: [web, edge]
limits:
  cpu: 0.5
  region: ~
출력
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <service>api</service>
  <port>8080</port>
  <tags>
    <item>web</item>
    <item>edge</item>
  </tags>
  <limits>
    <cpu>0.5</cpu>
    <region/>
  </limits>
</root>

키는 요소가 되고, 목록 항목은 반복되는 item 요소가 되며, null은 스스로 닫는 요소가 됩니다. 속성은 만들지 않습니다.

유효하지 않은 이름과 이스케이프된 텍스트 (루트 config)
입력
my key: 1
"a<b": "<&>"
3d: x
xmlfoo: 2
ratio: 1.0
출력
<?xml version="1.0" encoding="UTF-8"?>
<config>
  <my_x20_key>1</my_x20_key>
  <a_x3c_b>&lt;&amp;&gt;</a_x3c_b>
  <_3d>x</_3d>
  <_xmlfoo>2</_xmlfoo>
  <ratio>1.0</ratio>
</config>

루트 요소를 config로 정한 경우입니다. 공백과 <는 인코딩되고, 숫자로 시작하는 키와 xml 접두어에는 밑줄이 붙으며, 텍스트는 이스케이프됩니다. 정수 값 실수 1.0은 쓴 모양 그대로 적힙니다.

사용자 지정 요소가 있는 목록 (people, person, 공백 4칸, 선언 없음)
입력
- name: Ada
  tags: [a, b]
- name: Bo
출력
<people>
    <person>
        <name>Ada</name>
        <tags>
            <person>a</person>
            <person>b</person>
        </tags>
    </person>
    <person>
        <name>Bo</name>
    </person>
</people>

루트 요소 people, 배열 항목 요소 person, 들여쓰기 공백 4칸, XML 선언 끔입니다. 항목 이름은 중첩 목록에도 적용되어 tags 안도 person 요소입니다.

병합 키가 요소에 복사됨
입력
base: &b {host: db, port: 5432}
dev:
  <<: *b
  port: 6543
출력
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <base>
    <host>db</host>
    <port>5432</port>
  </base>
  <dev>
    <host>db</host>
    <port>6543</port>
  </dev>
</root>

dev는 앵커의 host를 받고 자기 port를 유지하므로 XML에 참조 장치가 필요 없습니다.

여러 문서
입력
a: 1
---
b: 2
출력
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <item>
    <a>1</a>
  </item>
  <item>
    <b>2</b>
  </item>
</root>

자동 모드는 문서 둘을 목록으로 만들어 문서마다 item 요소가 됩니다. 첫 문서만을 고르면 루트 바로 아래에 a 요소만 남고 버린 문서에 대한 알림이 나옵니다.

무한대, 큰 정수, 날짜
입력
v: .inf
big: 9007199254740993
d: 2026-03-14
출력
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <v>.inf</v>
  <big>9007199254740993</big>
  <d>2026-03-14</d>
</root>

알림이 두 개 나옵니다. 무한대는 텍스트로 썼고 2^53을 넘는 정수는 정확한 텍스트로 유지했습니다. 날짜는 평범한 문자열입니다.

자주 하는 실수

  • 속성도 혼합 콘텐츠도 없음

    모든 것이 요소 텍스트가 됩니다. 대상 스키마가 <item id="1"> 같은 속성을 기대하면 XML을 후처리하거나 XML 편집기에서 구조를 바꾸세요.

  • 항목 이름은 모든 목록이 공유

    배열 항목 요소 이름 하나가 모든 중첩 단계에 쓰이므로 중첩 목록은 같은 이름을 반복하고, 목록의 목록은 다시 읽기 어렵습니다. 스키마가 서로 다른 항목 이름을 요구하면 YAML에서 키 이름을 바꾸세요.

  • 이스케이프된 이름은 스키마가 기대하는 이름이 아님

    my key 같은 키는 my_x20_key가 됩니다. 문서는 올바른 형식으로 유지되지만 myKey를 기대하는 스키마와는 맞지 않습니다. YAML에서 키 이름을 먼저 바꾸세요.

  • XML에서는 타입이 사라짐

    true, 8080, "8080"이 모두 텍스트 true나 8080이 되므로 읽는 쪽에서 숫자와 문자열을 구분할 수 없습니다. 받는 쪽이나 XSD에서 타입을 정의하세요.

  • 실수는 타입이 아니라 글자로 남음

    ratio: 1.0은 텍스트 1.0으로, 1e3은 1000.0으로 쓰이지만 요소에 타입 정보는 없습니다. 숫자를 파싱하는 받는 쪽은 1.0을 실수로 읽고, 스키마 없는 쪽은 글자로만 봅니다.

  • 순서, 주석, 앵커

    1처럼 정수 모양인 키는 자바스크립트가 그렇게 정렬하므로 맨 앞에 쓰입니다. YAML 주석은 버려지고, 앵커와 별칭은 반복된 복사본이 됩니다.

자주 묻는 질문

YAML 목록은 XML에서 어떻게 쓰이나요?

기본적으로 항목마다 item이라는 이름의 자식 요소가 반복됩니다. 이름은 배열 항목 요소에서 바꿀 수 있습니다. 최상위 목록은 루트 요소 바로 아래에 항목 요소가 옵니다.

null이나 빈 값은 어떻게 되나요?

null, 빈 목록, 빈 매핑은 모두 <region/> 같은 스스로 닫는 요소가 됩니다.

키가 유효한 XML 이름이 아니면 어떻게 되나요?

거부하지 않고 인코딩합니다. 문제 있는 글자는 _x<hex>_가 되고, 숫자로 시작하거나 xml 접두어가 있으면 밑줄이 붙어 3d는 _3d입니다. 직접 입력하는 루트와 항목 이름은 유효해야 하며 아니면 오류가 납니다.

병합 키와 별칭도 펼치나요?

네. 별칭은 전체 복사본이 되고 << 병합 키는 기본으로 펼쳐집니다. 병합 키 펼치기를 끄면 원본 병합 키가 요소로 나옵니다.

XML 선언을 빼거나 들여쓰기를 바꿀 수 있나요?

네. XML 선언은 스위치이고 들여쓰기는 공백 2칸, 공백 4칸, 탭 중에서 고릅니다.

YAML에 문서가 여러 개여도 되나요?

네. 자동 모드에서는 문서마다 루트 아래 item 요소 하나가 됩니다. 첫 문서만을 고르면 첫 문서만 남기고 알림을 보여 줍니다.

YAML이 업로드되나요?

아니요. 파싱과 XML 생성은 브라우저 탭 안에서 실행되며 서버로 전송되지 않습니다. 입력은 20MiB까지입니다.

마지막 업데이트: