XML to YAML

XML को YAML फॉर्मेट में कनवर्ट करें

उदाहरण देखें

XML इनपुट

YAML आउटपुट

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है
YAML यहाँ दिखाई देगा…

XML से YAML रूपांतरण क्या है?

XML से YAML रूपांतरण डेटा को Extensible Markup Language (XML) से YAML Ain't Markup Language (YAML) में परिवर्तित करता है। XML कोण-कोष्ठक टैगों और विशेषताओं का उपयोग करके पदानुक्रमिक डेटा का वर्णन करता है, जबकि YAML समान संरचनाओं को इंडेंटेशन और सादे पाठ के key-value pairs के माध्यम से दर्शाता है। XML को YAML में ऑनलाइन बदलना एक सामान्य कार्य है जब XML-प्रधान प्रणालियों जैसे Java Spring, Maven, या .NET से उन प्लेटफ़ॉर्म की ओर माइग्रेशन हो जो YAML पसंद करते हैं, जैसे Kubernetes, Ansible, GitHub Actions और Docker Compose।

दोनों फ़ॉर्मेट के डेटा मॉडल अलग हैं। XML डिफ़ॉल्ट रूप से सब कुछ पाठ के रूप में संग्रहीत करता है और प्रकार लागू करने के लिए स्कीमा परिभाषाओं (XSD, DTD) पर निर्भर करता है। YAML में मूल प्रकार होते हैं: स्ट्रिंग, पूर्णांक, दशमलव, बूलियन, शून्य, अनुक्रम (ऐरे) और मैपिंग (ऑब्जेक्ट)। रूपांतरण के दौरान "true", "5432" और "3.14" जैसे मान YAML के मूल प्रकारों के रूप में parse हो सकते हैं। एक सावधान कनवर्टर इन मानों को उद्धृत करता है ताकि XML स्रोत का मूल पाठ प्रतिनिधित्व सुरक्षित रहे।

XML में ऐसी संरचनाएं भी हैं जिनका YAML में कोई समतुल्य नहीं है: विशेषताएं, नेमस्पेस, प्रोसेसिंग निर्देश, CDATA अनुभाग और टिप्पणियाँ। रूपांतरण को विशेषताओं को दर्शाने के लिए एक परंपरा चुननी होती है (सामान्यतः अंडरस्कोर-उपसर्ग वाली कुंजियाँ जैसे _attr) और शेष को त्यागने या समतल करने का निर्णय लेना होता है। रूपांतरण से पहले इन बातों को समझने से आप सही उपकरण चुन सकते हैं, उसे सही तरीके से कॉन्फ़िगर कर सकते हैं, और सत्यापित कर सकते हैं कि YAML आउटपुट मूल XML के उद्देश्य से मेल खाता है।

XML input
<server>
  <host>db.example.com</host>
  <port>5432</port>
  <credentials admin="true">
    <username>deploy</username>
    <password>s3cret</password>
  </credentials>
  <options>
    <option>ssl=true</option>
    <option>timeout=30</option>
  </options>
</server>
YAML output
server:
  host: db.example.com
  port: "5432"
  credentials:
    _admin: "true"
    username: deploy
    password: s3cret
  options:
    option:
      - ssl=true
      - timeout=30

ऑनलाइन XML से YAML कनवर्टर क्यों उपयोग करें?

हाथ से रूपांतरण स्क्रिप्ट लिखने में विशेषता मैपिंग, बार-बार आने वाले एलिमेंट के लिए ऐरे पहचान और YAML type coercion की edge cases से जूझना पड़ता है। ब्राउज़र-आधारित कनवर्टर यह सब एक चरण में संभालता है और आप YAML आउटपुट की जाँच करके उसे सीधे अपनी कॉन्फ़िग फ़ाइलों में चिपका सकते हैं।

तत्काल रूपांतरण
XML चिपकाएं और मिलीसेकंड में YAML आउटपुट पाएं। कोई लाइब्रेरी इंस्टॉलेशन नहीं, कोई बिल्ड चरण नहीं, कोई स्क्रिप्ट रखरखाव नहीं।
🔒
Privacy-first प्रोसेसिंग
रूपांतरण पूरी तरह आपके ब्राउज़र में JavaScript का उपयोग करके होता है। आपका XML डेटा आपके कंप्यूटर पर ही रहता है और कभी किसी सर्वर पर नहीं भेजा जाता।
🔀
विशेषताएं और ऐरे संभालता है
XML विशेषताओं को उपसर्ग-युक्त कुंजियों पर मैप किया जाता है। बार-बार आने वाले sibling elements स्वचालित रूप से YAML अनुक्रमों में समूहीकृत हो जाते हैं, जिससे सूची संरचनाएं सुरक्षित रहती हैं।
📋
कोई खाता आवश्यक नहीं
पृष्ठ खोलें, XML चिपकाएं, YAML परिणाम की प्रतिलिपि लें। कोई पंजीकरण नहीं, कोई API कुंजी नहीं, कोई उपयोग सीमा नहीं।

XML से YAML के उपयोग के मामले

फ्रंटएंड विकास
पुराने बिल्ड उपकरणों (Ant, Maven) के XML कॉन्फ़िगरेशन खंडों को आधुनिक CI पाइपलाइनों जैसे GitHub Actions या GitLab CI के लिए YAML में बदलें, जो YAML कॉन्फ़िग फ़ाइलों की अपेक्षा करते हैं।
बैकएंड इंजीनियरिंग
Spring XML बीन परिभाषाओं को Spring Boot के application.yml फ़ॉर्मेट में माइग्रेट करें, या कंटेनर तैनाती के लिए .NET app.config अनुभागों को YAML में बदलें।
DevOps और इन्फ्रास्ट्रक्चर
XML-आधारित तैनाती विवरणकों (Tomcat server.xml, IIS web.config) को Kubernetes मैनिफेस्ट, Helm चार्ट या Ansible प्लेबुक के लिए YAML समतुल्य में रूपांतरित करें।
QA और परीक्षण
XML परीक्षण फ़िक्सचर या JUnit कॉन्फ़िगरेशन को उन परीक्षण फ़्रेमवर्क के लिए YAML में बदलें जो YAML डेटा स्रोतों का समर्थन करते हैं, जैसे YAML फ़िक्सचर के साथ pytest या Robot Framework।
डेटा इंजीनियरिंग
एंटरप्राइज़ प्रणालियों (SAP, Oracle) से XML डेटा निर्यात को dbt या Airflow जैसे ETL उपकरणों के लिए YAML में परिवर्तित करें जो YAML-आधारित कॉन्फ़िगरेशन और स्कीमा का उपयोग करते हैं।
अध्ययन और दस्तावेज़ीकरण
विद्यार्थी और तकनीकी लेखक XML नमूने चिपका सकते हैं ताकि देख सकें कि एलिमेंट, विशेषताएं और नेस्टिंग YAML इंडेंटेशन, अनुक्रमों और मैपिंग पर कैसे रूपांतरित होती हैं।

XML से YAML मैपिंग संदर्भ

XML और YAML के डेटा मॉडल अलग हैं। नीचे दी गई तालिका दर्शाती है कि प्रत्येक XML संरचना अपने YAML समतुल्य पर कैसे मैप होती है। विशेषताओं को सामान्यतः अंडरस्कोर-उपसर्ग वाली कुंजियों में बदला जाता है और बार-बार आने वाले एलिमेंट YAML अनुक्रम बन जाते हैं। टिप्पणियाँ और प्रोसेसिंग निर्देश जैसी कुछ संरचनाओं का YAML में कोई प्रतिनिधित्व नहीं है और रूपांतरण के दौरान हटा दी जाती हैं।

XML संरचनाXML उदाहरणYAML समतुल्य
Element<name>text</name>name: text
Nested elements<a><b>1</b></a>a:\n b: "1"
Attributes<el attr="v"/>el:\n _attr: v
Text + attributes<el a="1">text</el>el:\n _a: "1"\n _text: text
Repeated elements<r><i>1</i><i>2</i></r>r:\n i:\n - "1"\n - "2"
Empty element<el/>el: ""
CDATA<![CDATA[raw]]>Treated as plain text
Comments<!-- note -->Discarded (no YAML equivalent)
Namespacesxmlns:ns="uri"Prefix preserved or stripped
Boolean-like text<flag>true</flag>flag: "true" (quoted to stay string)

XML बनाम YAML: डेटा मॉडल के अंतर

XML और YAML के बीच रूपांतरण केवल एक सिंटैक्स परिवर्तन नहीं है। इन फ़ॉर्मेट में मूलभूत संरचनात्मक अंतर हैं जो रूपांतरण के बाद डेटा के प्रतिनिधित्व को प्रभावित करते हैं।

प्रकार प्रणाली
XML सभी मानों को पाठ स्ट्रिंग के रूप में संग्रहीत करता है। YAML में मूल बूलियन, पूर्णांक, दशमलव और शून्य प्रकार होते हैं। रूपांतरण के दौरान "true" या "3306" जैसा मान YAML बूलियन या पूर्णांक के रूप में parse हो सकता है जब तक कनवर्टर उसे उद्धृत न करे। आउटपुट में प्रकार-संवेदनशील मानों को हमेशा सत्यापित करें।
विशेषताएं बनाम कुंजियाँ
XML एलिमेंट में चाइल्ड एलिमेंट और पाठ सामग्री के साथ-साथ विशेषताएं भी हो सकती हैं। YAML में केवल key-value मैपिंग होती है। विशेषताओं को नियमित कुंजियों में बदलना पड़ता है, सामान्यतः _ या @ जैसे उपसर्ग के साथ ताकि वे चाइल्ड एलिमेंट से अलग दिखें।
क्रम और दोहराव
XML दस्तावेज़ क्रम सुरक्षित रखता है और एक ही टैग नाम वाले sibling elements की अनुमति देता है। YAML मैपिंग विनिर्देश के अनुसार अक्रमित होती हैं (हालांकि अधिकांश पार्सर सम्मिलन क्रम बनाए रखते हैं) और YAML 1.2 में डुप्लिकेट कुंजियाँ वर्जित हैं। बार-बार आने वाले XML एलिमेंट को YAML अनुक्रम बनना ही होगा।

कोड उदाहरण

नीचे JavaScript, Python, Go और कमांड लाइन में XML को YAML में बदलने के कार्यशील उदाहरण दिए गए हैं। प्रत्येक उदाहरण नेस्टेड एलिमेंट, विशेषताएं और बार-बार आने वाले sibling tags संभालता है।

JavaScript (Node.js)
import { parseStringPromise } from 'xml2js'
import YAML from 'yaml'

const xml = `
<config>
  <database host="localhost" port="5432">
    <name>mydb</name>
  </database>
  <features>
    <feature>auth</feature>
    <feature>logging</feature>
  </features>
</config>`

const obj = await parseStringPromise(xml, { explicitArray: false })
console.log(YAML.stringify(obj))
// → config:
// →   database:
// →     $:
// →       host: localhost
// →       port: "5432"
// →     name: mydb
// →   features:
// →     feature:
// →       - auth
// →       - logging
Python
import xmltodict
import yaml

xml = """
<server>
  <host>db.example.com</host>
  <port>5432</port>
  <replicas>
    <replica>node-1</replica>
    <replica>node-2</replica>
  </replicas>
</server>
"""

# Step 1: XML → Python dict
data = xmltodict.parse(xml)

# Step 2: Python dict → YAML
print(yaml.dump(data, default_flow_style=False))
# → server:
# →   host: db.example.com
# →   port: '5432'
# →   replicas:
# →     replica:
# →     - node-1
# →     - node-2

# With the standard library only (no xmltodict)
import xml.etree.ElementTree as ET

def elem_to_dict(elem):
    d = {}
    if elem.attrib:
        d.update({f"_{k}": v for k, v in elem.attrib.items()})
    for child in elem:
        val = elem_to_dict(child)
        if child.tag in d:
            if not isinstance(d[child.tag], list):
                d[child.tag] = [d[child.tag]]
            d[child.tag].append(val)
        else:
            d[child.tag] = val
    if elem.text and elem.text.strip():
        text = elem.text.strip()
        return text if not d else {**d, "_text": text}
    return d

root = ET.fromstring(xml)
print(yaml.dump({root.tag: elem_to_dict(root)}, default_flow_style=False))
CLI (xq + yq)
# xq is part of the yq package (pip install yq)
# It parses XML via xq and outputs JSON, then pipe to yq for YAML

echo '<config><host>localhost</host><port>8080</port></config>' | xq . | yq -y .
# → config:
# →   host: localhost
# →   port: "8080"

# Using xmlstarlet + yq (Go version: https://github.com/mikefarah/yq)
xmlstarlet sel -t -c '/' input.xml | yq -p=xml -o=yaml
# Reads XML from file and outputs YAML directly
Go
package main

import (
	"encoding/xml"
	"fmt"
	"strings"

	"gopkg.in/yaml.v3"
)

type Server struct {
	XMLName xml.Name `xml:"server"`
	Host    string   `xml:"host" yaml:"host"`
	Port    int      `xml:"port" yaml:"port"`
	Options []string `xml:"options>option" yaml:"options"`
}

func main() {
	data := `<server>
		<host>db.example.com</host>
		<port>5432</port>
		<options><option>ssl=true</option><option>timeout=30</option></options>
	</server>`

	var srv Server
	xml.NewDecoder(strings.NewReader(data)).Decode(&srv)

	out, _ := yaml.Marshal(srv)
	fmt.Println(string(out))
	// → host: db.example.com
	// → port: 5432
	// → options:
	// →   - ssl=true
	// →   - timeout=30
}

अक्सर पूछे जाने वाले प्रश्न

क्या XML से YAML रूपांतरण बिना हानि के होता है?
पूरी तरह नहीं। XML विशेषताओं, टिप्पणियों, प्रोसेसिंग निर्देशों और CDATA अनुभागों का YAML में कोई मूल समतुल्य नहीं है। विशेषताओं को उपसर्ग-युक्त कुंजियों (_attr या @attr) के रूप में सुरक्षित रखा जा सकता है, लेकिन टिप्पणियाँ और प्रोसेसिंग निर्देश हटा दिए जाते हैं। यदि आपको वापस XML पर जाना हो, तो सत्यापित करें कि विशेषताएं और नेमस्पेस घोषणाएं रूपांतरण में जीवित रहीं।
YAML में XML विशेषताएं कैसे दर्शाई जाती हैं?
अधिकांश कनवर्टर विशेषता नामों के आगे अंडरस्कोर (_) या @ चिह्न लगाते हैं ताकि वे चाइल्ड एलिमेंट कुंजियों से अलग रहें। उदाहरण के लिए, <server port="8080"> का रूपांतरण server:\n _port: "8080" होता है। विशिष्ट उपसर्ग उपयोग की गई लाइब्रेरी या उपकरण पर निर्भर करता है।
रूपांतरण के दौरान बार-बार आने वाले XML एलिमेंट का क्या होता है?
जब एक ही मूल के अंतर्गत एक ही एलिमेंट टैग अनेक बार आता है, तो कनवर्टर उन्हें YAML अनुक्रम (सूची) में समूहीकृत करता है। उदाहरण के लिए, दो <item> sibling elements, item:\n - value1\n - value2 बन जाते हैं। एकल <item> तब तक scalar मान रहता है जब तक force-array मोड सक्षम न हो।
क्या मैं YAML को वापस XML में बदल सकता हूँ?
हाँ, लेकिन परिणाम इस पर निर्भर करता है कि मूल रूपांतरण में विशेषताओं और प्रकारों को कैसे संभाला गया। यदि विशेषताएं उपसर्ग-युक्त कुंजियों के साथ सुरक्षित थीं, तो YAML से XML कनवर्टर उन्हें पुनर्निर्मित कर सकता है। ToolDeck में विपरीत दिशा के लिए YAML to XML उपकरण उपलब्ध है। ध्यान रखें कि YAML के मूल प्रकार (बूलियन, संख्याएं) XML में पाठ स्ट्रिंग बन जाएंगे।
YAML आउटपुट कुछ मानों को उद्धृत क्यों करता है?
YAML में मूल प्रकार होते हैं: true/false बूलियन हैं, बिना quotes के अंक पूर्णांक या दशमलव बनते हैं, और YAML 1.1 में yes/no/on/off भी बूलियन हैं। यदि आपके XML में "true" या "3306" जैसा पाठ है जो स्ट्रिंग रहना चाहिए, तो कनवर्टर उसे उद्धृत करता है ताकि YAML पार्सर उस मान की गलत व्याख्या न करे। यह सही व्यवहार है, कोई त्रुटि नहीं।
मैं बड़ी XML फ़ाइलें कैसे संभालूं?
ब्राउज़र-आधारित कनवर्टर कुछ मेगाबाइट तक की फ़ाइलों के लिए अच्छी तरह कार्य करते हैं। बड़ी फ़ाइलों (10MB से अधिक) के लिए स्ट्रीमिंग दृष्टिकोण उपयोग करें: Python के iterparse या Node.js के sax से XML पार्स करें, मध्यवर्ती ऑब्जेक्ट को क्रमिक रूप से निर्मित करें, फिर YAML में क्रमबद्ध करें। yq जैसे उपकरण भी कमांड लाइन से सीधे XML को YAML में बदल सकते हैं बिना पूरे दस्तावेज़ को मेमोरी में लोड किए।
XML से YAML और XML से JSON रूपांतरण में क्या अंतर है?
दोनों रूपांतरणों में XML विशेषताओं और बार-बार आने वाले एलिमेंट को भिन्न डेटा मॉडल पर मैप करने की एक ही चुनौती होती है। मुख्य अंतर आउटपुट फ़ॉर्मेट में है। JSON कड़ा है (कोई टिप्पणी नहीं, स्पष्ट प्रकार, सख्त सिंटैक्स), जबकि YAML, JSON का सुपरसेट है जो मानव-अनुकूल सुविधाएं जोड़ता है: टिप्पणियाँ, बहु-पंक्ति स्ट्रिंग, एंकर और उपनाम। JSON चुनें जब उपभोक्ता कोई API या JavaScript रनटाइम हो। YAML चुनें जब उपभोक्ता कॉन्फ़िगरेशन फ़ाइलें संपादित करने वाला कोई व्यक्ति हो।