YAML to XML

Преобразует YAML в формат XML

Попробовать пример

Ввод YAML

Вывод XML

Работает локально · Безопасно вставлять секреты
XML появится здесь…
Также попробуйте:YAML to JSON

Что такое преобразование YAML в XML?

Преобразование YAML в XML — это трансформация данных, записанных в формате YAML (YAML Ain't Markup Language), в XML (Extensible Markup Language). YAML использует отступы и минимальную пунктуацию для представления структурированных данных, тогда как XML использует открывающие и закрывающие теги с явной иерархией. Конвертация между этими форматами — рядовая задача, когда системы, потребляющие XML, должны получать данные, изначально написанные в YAML.

YAML создавался с акцентом на читаемость для человека. Конфигурационные файлы таких инструментов, как Kubernetes, Ansible, Docker Compose и GitHub Actions, пишутся в YAML — он компактен и удобен для ручного редактирования. XML, определённый спецификацией W3C XML 1.0, десятилетиями остаётся стандартным форматом обмена данными в корпоративных системах, SOAP-веб-сервисах и документо-ориентированных рабочих процессах. Когда конфигурация в формате YAML должна поступить в XML-конвейер, без конвертации не обойтись.

Соответствие между YAML и XML не является взаимно однозначным. YAML нативно поддерживает типы данных: булевы значения, целые числа, числа с плавающей точкой и null, тогда как XML трактует всё содержимое как текст — если только схема (XSD или DTD) не задаёт типы явно. Последовательности YAML (списки) не имеют прямого аналога в XML и представляются как повторяющиеся элементы. Понимание этих различий помогает предсказать результат конвертации и избежать неожиданностей.

Зачем использовать этот конвертер YAML в XML?

Вручную переписывать YAML как XML — утомительно и чревато ошибками, особенно при глубоко вложенных структурах. Этот конвертер выполняет структурную трансформацию мгновенно.

Мгновенное преобразование
Вставьте YAML и сразу получите отформатированный XML. Не нужно писать скрипт или устанавливать CLI-инструмент для разовой конвертации.
🔒
Обработка без передачи данных
Вся конвертация выполняется в браузере. Ваши YAML-данные, нередко содержащие адреса серверов, учётные данные и детали инфраструктуры, никогда не покидают ваш компьютер.
📋
Без регистрации
Используйте конвертер без регистрации, входа в аккаунт или указания электронной почты. Откройте страницу и начинайте конвертировать.
🌐
Поддержка вложенных структур
Поддерживаются глубоко вложенные YAML-отображения, последовательности, смешанные типы и многострочные строки. В выводе иерархия сохраняется с правильными отступами XML.

Сценарии использования конвертера YAML в XML

Frontend-разработка
Преобразуйте YAML-данные-заглушки в формат XML для тестирования XML-парсеров, XSLT-преобразований или компонентов, ожидающих XML-ответы от API.
Backend-интеграция
Трансформируйте YAML-конфигурацию в XML при интеграции с устаревшими Java-сервисами, использующими Spring XML config, Maven POM-файлы или SOAP-эндпоинты.
DevOps и CI/CD
Конвертируйте манифесты Kubernetes или Ansible YAML в XML для инструментов, требующих XML-ввода, — например, конфигураций Jenkins Pipeline или отдельных систем мониторинга.
QA и тестирование
Генерируйте XML-фикстуры для тестов из YAML-определений. YAML удобнее поддерживать как тестовые данные, а конвертация в XML во время тестирования сохраняет фикстуры читаемыми.
Инженерия данных
Конвертируйте ETL-конфиги или определения схем в формате YAML в XML для конвейеров, потребляющих XML. Типично для сферы здравоохранения (HL7), финансов (FpML) и государственных информационных систем.
Обучение и прототипирование
Студенты и начинающие разработчики могут вставить YAML и рядом увидеть эквивалентную структуру XML, что помогает интуитивно понять, как иерархические данные отображаются между форматами.

Справочник по сопоставлению типов YAML и XML

Типы данных YAML не отображаются в XML напрямую. В таблице ниже показано, как каждая конструкция YAML соответствует своему аналогу в XML. Понимание этих правил помогает предсказать результат и разобраться в неожиданных выводах.

Тип YAMLПример YAMLXML-вывод
Mapping (key: value){ name: Alice }<name>Alice</name>
Sequence (- item)- apple\n- banana<item>apple</item><item>banana</item>
Nested mappinguser:\n name: Alice<user><name>Alice</name></user>
Scalar (string)greeting: hello world<greeting>hello world</greeting>
Scalar (number)count: 42<count>42</count>
Scalar (boolean)active: true<active>true</active>
Nullvalue: null<value/>
Multiline stringbio: |\n Line one\n Line two<bio>Line one\nLine two</bio>

YAML и XML: различия форматов

YAML и XML решают одну задачу — представление структурированных данных — с разными компромиссами. Ни один из них не является универсально лучшим; выбор зависит от того, кто или что потребляет данные.

YAML
Разделение пробельными символами, без закрывающих тегов. Поддерживает нативные типы (bool, int, float, null). Комментарии через #. Компактен для конфигурации и ручного редактирования. Парсится библиотеками PyYAML, js-yaml, gopkg.in/yaml.
XML
Теговая структура с явными парами открывающий/закрывающий тег. Все значения по умолчанию — текст; типы требуют схемы (XSD). Поддерживает атрибуты, пространства имён, смешанное содержимое и инструкции по обработке. Парсится стандартной библиотекой любого крупного языка.
ХарактеристикаYAMLXML
СинтаксисНа основе отступовТеговый (&lt;тег&gt;...&lt;/тег&gt;)
Типы данныхНативные (string, int, bool, null, float)Только текст (типы задаются схемой)
Комментарии# строчные комментарии<!-- блочные комментарии -->
АтрибутыНативная поддержка отсутствуетДа (&lt;tag attr="val"&gt;)
Пространства имёнНе поддерживаютсяДа (xmlns:prefix)
Размер файлаМеньше (нет закрывающих тегов)Больше (многословные теги)

Примеры кода

Как программно преобразовать YAML в XML на разных языках и в разных окружениях:

JavaScript (Node.js)
import { parseDocument } from 'yaml'
import { js2xml } from 'xml-js'

const yamlStr = `
server:
  host: localhost
  port: 8080
  ssl: true
`

const data = parseDocument(yamlStr).toJSON()
const xml = js2xml({ root: data }, { compact: true, spaces: 2 })
console.log(xml)
// → <root>
// →   <server>
// →     <host>localhost</host>
// →     <port>8080</port>
// →     <ssl>true</ssl>
// →   </server>
// → </root>
Python
import yaml
import xml.etree.ElementTree as ET

yaml_str = """
database:
  host: db.example.com
  port: 5432
  credentials:
    user: admin
    password: secret
"""

data = yaml.safe_load(yaml_str)

def dict_to_xml(tag, d):
    elem = ET.Element(tag)
    for key, val in d.items():
        child = ET.SubElement(elem, key)
        if isinstance(val, dict):
            child.extend(dict_to_xml(key, val))
            elem.remove(child)
            elem.append(dict_to_xml(key, val))
        else:
            child.text = str(val)
    return elem

root = dict_to_xml('root', data)
ET.indent(root, space='  ')
print(ET.tostring(root, encoding='unicode'))
# → <root>
# →   <database>
# →     <host>db.example.com</host>
# →     <port>5432</port>
# →     ...
# →   </database>
# → </root>
Go
package main

import (
    "encoding/xml"
    "fmt"
    "gopkg.in/yaml.v3"
)

type Server struct {
    XMLName xml.Name `xml:"server"`
    Host    string   `yaml:"host" xml:"host"`
    Port    int      `yaml:"port" xml:"port"`
    SSL     bool     `yaml:"ssl"  xml:"ssl"`
}

func main() {
    yamlData := []byte("host: localhost\nport: 8080\nssl: true")

    var s Server
    yaml.Unmarshal(yamlData, &s)

    xmlBytes, _ := xml.MarshalIndent(s, "", "  ")
    fmt.Println(xml.Header + string(xmlBytes))
    // → <?xml version="1.0" encoding="UTF-8"?>
    // → <server>
    // →   <host>localhost</host>
    // →   <port>8080</port>
    // →   <ssl>true</ssl>
    // → </server>
}
CLI (yq + xq)
# Using yq (YAML processor) with xq (XML wrapper around jq)
# Install: pip install yq

# Convert YAML file to XML
yq -x . config.yaml
# → <host>localhost</host><port>8080</port>

# Pipe inline YAML through conversion
echo "name: Alice" | yq -x .
# → <name>Alice</name>

Часто задаваемые вопросы

Можно ли представить последовательности YAML в XML?
Да, но XML не имеет нативного типа «список». Последовательности YAML, как правило, преобразуются в повторяющиеся XML-элементы с одинаковым именем тега. Например, список YAML под ключом «items» превращается в несколько дочерних элементов &lt;item&gt;. Некоторые конвертеры оборачивают их в родительский элемент &lt;items&gt; для наглядности.
Что происходит с комментариями YAML при конвертации?
Комментарии YAML (строки, начинающиеся с #) отбрасываются при конвертации. Большинство YAML-парсеров удаляет комментарии при построении структуры данных, поэтому они недоступны в XML-выводе. Если нужно сохранить комментарии, потребуется YAML-парсер, который их сохраняет, — например, ruamel.yaml в Python.
Как обрабатываются якоря и псевдонимы YAML?
Якоря YAML (&name) и псевдонимы (*name) раскрываются до конвертации. Парсер подставляет псевдонимы с полными значениями, поэтому результирующий XML содержит полные данные без каких-либо ссылок на якоря. Это означает, что XML-вывод может быть больше YAML-ввода, если якоря использовались для устранения повторений.
Является ли конвертация обратимой (XML обратно в YAML)?
Частично. Конвертировать XML в YAML можно, но результат может не совпадать с исходным YAML. Атрибуты XML не имеют аналога в YAML и обычно представляются как специальные ключи (например, @attribute). Информация о типах также теряется, поскольку XML трактует всё как текст, — числа и булевы значения из исходного YAML становятся строками после обратного преобразования.
Как обрабатываются атрибуты XML при конвертации из YAML?
В YAML нет нативной концепции атрибутов. Распространённое соглашение — добавлять к ключам префикс @, чтобы обозначить их как XML-атрибуты, а не дочерние элементы. Например, «@id: 42» в отображении создаст &lt;element id="42"&gt;. Это соглашение используют библиотеки xml-js и xmltodict.
Какой максимальный размер YAML-файла поддерживает инструмент?
Конвертер работает в браузере, поэтому ограничение определяется доступной памятью устройства. Файлы размером до нескольких мегабайт конвертируются без проблем на современном оборудовании. Для очень больших файлов (50 МБ и более) используйте инструмент командной строки yq или Python-скрипт с PyYAML и lxml — они эффективнее управляют потоковой обработкой и памятью.
Почему мой YAML генерирует некорректный XML-вывод?
Наиболее распространённая причина — ключи YAML, не являющиеся допустимыми именами XML-элементов. Имена XML-элементов не могут начинаться с цифры, содержать пробелы или большинство специальных символов. Ключи вроде «2nd-item» или «my key» сформируют некорректный XML. Переименуйте проблемные ключи или используйте конвертер, который автоматически санирует имена (например, заменяет пробелы на подчёркивания и добавляет подчёркивание перед именами, начинающимися с цифры).