YAML to XML

Konversi YAML ke format XML

Coba contoh

Input YAML

Output XML

Berjalan lokal · Aman untuk menempel rahasia
XML akan muncul di sini…
Coba juga:YAML to JSON

Apa itu Konversi YAML ke XML?

Konversi YAML ke XML mengubah data yang ditulis dalam YAML (YAML Ain't Markup Language) menjadi XML (Extensible Markup Language). YAML menggunakan indentasi dan tanda baca minimal untuk merepresentasikan data terstruktur, sementara XML menggunakan tag pembuka dan penutup dengan hierarki yang eksplisit. Mengonversi antara keduanya adalah tugas rutin ketika sistem yang menggunakan XML perlu menerima data yang awalnya ditulis dalam YAML.

YAML dirancang untuk keterbacaan manusia. File konfigurasi untuk alat seperti Kubernetes, Ansible, Docker Compose, dan GitHub Actions ditulis dalam YAML karena kompak dan mudah disunting secara manual. XML, yang didefinisikan oleh spesifikasi W3C XML 1.0, telah menjadi format pertukaran data default dalam sistem enterprise, layanan web SOAP, dan alur kerja berbasis dokumen selama beberapa dekade. Ketika konfigurasi yang ditulis dalam YAML harus masuk ke dalam pipeline berbasis XML, konversi diperlukan.

Pemetaan antara YAML dan XML tidak satu-satu. YAML mendukung tipe data seperti boolean, integer, float, dan null secara native, sementara XML memperlakukan semua konten sebagai teks kecuali jika skema (XSD atau DTD) mendefinisikan tipe secara eksternal. Urutan YAML (daftar) tidak memiliki padanan langsung dalam XML dan harus direpresentasikan sebagai elemen yang diulang. Memahami perbedaan ini membantu Anda memprediksi output dan menghindari kejutan.

Mengapa Menggunakan Konverter YAML ke XML Ini?

Menulis ulang YAML sebagai XML secara manual membosankan dan rawan kesalahan, terutama untuk struktur yang bersarang dalam. Konverter ini menangani translasi struktural secara instan.

Konversi Instan
Tempel YAML dan dapatkan output XML yang terformat seketika. Tidak perlu menulis skrip atau menginstal alat CLI untuk konversi sesekali.
🔒
Pemrosesan Utamakan Privasi
Semua konversi berjalan di browser Anda. Data YAML Anda — yang sering berisi alamat server, kredensial, dan detail infrastruktur — tidak pernah meninggalkan perangkat Anda.
📋
Tidak Perlu Akun
Gunakan konverter tanpa mendaftar, masuk, atau memberikan email. Buka halaman dan mulai mengonversi.
🌐
Menangani Struktur Bersarang
Mendukung pemetaan YAML yang bersarang dalam, urutan, tipe campuran, dan string multi-baris. Output mempertahankan hierarki dengan indentasi XML yang tepat.

Kasus Penggunaan YAML ke XML

Pengembangan Frontend
Konversi data mock YAML ke format XML untuk menguji parser XML, transformasi XSLT, atau komponen yang mengharapkan respons XML dari API.
Integrasi Backend
Ubah konfigurasi YAML menjadi XML saat berintegrasi dengan layanan Java lama yang menggunakan konfigurasi Spring XML, file Maven POM, atau endpoint SOAP.
DevOps dan CI/CD
Konversi manifes YAML Kubernetes atau Ansible ke XML untuk alat yang memerlukan input XML, seperti konfigurasi pipeline Jenkins atau sistem pemantauan tertentu.
QA dan Pengujian
Buat fixture pengujian XML dari definisi YAML. YAML lebih mudah dipelihara sebagai data pengujian, dan mengonversi ke XML saat pengujian menjaga fixture tetap mudah dibaca.
Rekayasa Data
Konversi konfigurasi ETL berformat YAML atau definisi skema ke XML untuk pipeline yang menggunakan XML. Umum dalam layanan kesehatan (HL7), keuangan (FpML), dan sistem data pemerintah.
Pembelajaran dan Prototipe
Pelajar dan pemula dapat menempel YAML dan melihat struktur XML yang setara secara berdampingan, yang membantu membangun intuisi tentang bagaimana data hierarkis dipetakan antar format.

Referensi Pemetaan Tipe YAML ke XML

Tipe data YAML tidak dipetakan langsung ke XML. Tabel ini menunjukkan bagaimana setiap konstruk YAML diterjemahkan ke padanan XML-nya. Memahami aturan ini membantu Anda memprediksi output dan memecahkan masalah hasil yang tidak terduga.

Tipe YAMLContoh YAMLOutput XML
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 vs XML: Perbedaan Format

YAML dan XML menyelesaikan masalah yang sama — representasi data terstruktur — dengan pertukaran yang berbeda. Tidak ada yang secara universal lebih baik; pilihan yang tepat bergantung pada siapa atau apa yang menggunakan data tersebut.

YAML
Dibatasi spasi, tanpa tag penutup. Mendukung tipe native (bool, int, float, null). Komentar dengan #. Kompak untuk konfigurasi dan pengeditan manusia. Diurai oleh pustaka seperti PyYAML, js-yaml, dan gopkg.in/yaml.
XML
Berbasis tag dengan pasangan buka/tutup yang eksplisit. Semua nilai adalah teks secara default; tipe memerlukan skema (XSD). Mendukung atribut, namespace, konten campuran, dan instruksi pemrosesan. Diurai oleh pustaka standar setiap bahasa pemrograman utama.
FiturYAMLXML
SintaksBerbasis indentasiBerbasis tag (&lt;tag&gt;...&lt;/tag&gt;)
Tipe dataNative (string, int, bool, null, float)Hanya teks (skema menambahkan tipe)
Komentar# komentar inline<!-- komentar blok -->
AtributTidak ada dukungan nativeYa (&lt;tag attr="val"&gt;)
NamespaceTidak didukungYa (xmlns:prefix)
Ukuran fileLebih kecil (tanpa tag penutup)Lebih besar (tag verbose)

Contoh Kode

Cara mengonversi YAML ke XML secara terprogram dalam berbagai bahasa dan lingkungan:

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>

Pertanyaan yang Sering Diajukan

Apakah urutan YAML dapat direpresentasikan dalam XML?
Ya, tetapi XML tidak memiliki tipe daftar native. Urutan YAML biasanya dikonversi menjadi elemen XML berulang dengan nama tag yang sama. Misalnya, daftar YAML di bawah kunci "items" menjadi beberapa elemen anak &lt;item&gt;. Beberapa konverter membungkusnya dalam elemen induk &lt;items&gt; untuk kejelasan.
Apa yang terjadi pada komentar YAML selama konversi?
Komentar YAML (baris yang diawali dengan #) dibuang selama konversi. Sebagian besar parser YAML membuang komentar saat membangun struktur data, sehingga tidak tersedia untuk output XML. Jika Anda perlu mempertahankan komentar, Anda memerlukan parser YAML yang menyimpannya, seperti ruamel.yaml di Python.
Bagaimana anchor dan alias YAML ditangani?
Anchor YAML (&name) dan alias (*name) diselesaikan sebelum konversi. Parser memperluas alias ke nilai lengkapnya, sehingga XML yang dihasilkan berisi data lengkap tanpa referensi anchor. Ini berarti output XML mungkin lebih besar dari input YAML jika anchor digunakan untuk menghindari pengulangan.
Apakah konversi dapat dibalik (XML kembali ke YAML)?
Sebagian. Anda dapat mengonversi XML ke YAML, tetapi hasilnya mungkin tidak cocok persis dengan YAML asli. Atribut XML tidak memiliki padanan YAML dan biasanya direpresentasikan sebagai kunci khusus (misalnya, @attribute). Informasi tipe juga hilang karena XML memperlakukan segalanya sebagai teks, sehingga angka dan boolean dalam YAML asli menjadi string setelah konversi bolak-balik.
Bagaimana cara menangani atribut XML saat mengonversi dari YAML?
YAML tidak memiliki konsep native untuk atribut. Konvensi umum adalah menambahkan awalan @ pada kunci untuk menunjukkan bahwa kunci tersebut harus menjadi atribut XML daripada elemen anak. Misalnya, "@id: 42" di bawah sebuah pemetaan akan menghasilkan &lt;element id="42"&gt;. Konvensi ini digunakan oleh pustaka seperti xml-js dan xmltodict.
Berapa ukuran file YAML maksimum yang dapat ditangani alat ini?
Konverter berjalan di browser Anda, sehingga batasnya bergantung pada memori yang tersedia di perangkat Anda. File hingga beberapa megabyte dapat dikonversi tanpa masalah pada perangkat keras modern. Untuk file yang sangat besar (50 MB ke atas), gunakan alat baris perintah seperti yq atau skrip Python dengan PyYAML dan lxml, yang menangani streaming dan memori dengan lebih efisien.
Mengapa YAML saya menghasilkan output XML yang tidak valid?
Penyebab paling umum adalah kunci YAML yang bukan nama elemen XML yang valid. Nama elemen XML tidak boleh diawali dengan angka, mengandung spasi, atau menggunakan sebagian besar karakter khusus. Kunci seperti "2nd-item" atau "my key" akan menghasilkan XML yang tidak valid. Ganti nama kunci yang bermasalah atau gunakan konverter yang membersihkan nama secara otomatis (misalnya, mengganti spasi dengan garis bawah dan menambahkan garis bawah di awal nama yang dimulai dengan angka).