ToolDeck

XML থেকে JSON

XML থেকে JSON ফরম্যাটে রূপান্তর করুন

একটি উদাহরণ চেষ্টা করুন

XML ইনপুট

JSON আউটপুট

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ
JSON এখানে দেখাবে…

XML থেকে JSON রূপান্তর কী?

XML থেকে JSON রূপান্তর হলো Extensible Markup Language (XML) থেকে JavaScript Object Notation (JSON)-এ ডেটা রূপান্তরের প্রক্রিয়া। উভয় ফরম্যাটই কাঠামোগত, শ্রেণিবদ্ধ ডেটা উপস্থাপন করে, কিন্তু তারা ভিন্ন সিনট্যাক্স ও ডেটা মডেল ব্যবহার করে। XML ঐচ্ছিক অ্যাট্রিবিউট সহ ওপেনিং ও ক্লোজিং ট্যাগ ব্যবহার করে, আর JSON কী-মান জোড়া, অ্যারে এবং প্রিমিটিভ টাইপ ব্যবহার করে। XML থেকে JSON-এ রূপান্তর করলে আপনি এমন পরিবেশে XML ডেটা নিয়ে কাজ করতে পারেন যেখানে JSON হলো নেটিভ ফরম্যাট, যেমন JavaScript রানটাইম, REST API এবং NoSQL ডেটাবেস।

রূপান্তর সবসময় এক-থেকে-এক হয় না। XML-এর এমন কিছু কাঠামো আছে যার কোনো সরাসরি JSON সমতুল্য নেই: অ্যাট্রিবিউট, মিশ্র কন্টেন্ট (চাইল্ড এলিমেন্টের সাথে মিশ্রিত টেক্সট), প্রসেসিং ইনস্ট্রাকশন, কমেন্ট, CDATA সেকশন এবং নেমস্পেস ডিক্লারেশন। বিভিন্ন রূপান্তর লাইব্রেরি এই কাঠামোগুলো ভিন্নভাবে পরিচালনা করে, তাই একাধিক রীতি বিদ্যমান। সবচেয়ে প্রচলিত পদ্ধতি হলো অ্যাট্রিবিউটের নামে @ উপসর্গ যোগ করা এবং একই এলিমেন্টে অ্যাট্রিবিউট থাকলে টেক্সট কন্টেন্টকে #text ফিল্ডে রাখা।

SOAP থেকে REST-এ মাইগ্রেশন, পুরনো এন্টারপ্রাইজ API ব্যবহার, অথবা XML বাধ্যতামূলক করে এমন সরকারি ও আর্থিক ডেটা ফিড প্রক্রিয়া করার সময় XML থেকে JSON রূপান্তর একটি সাধারণ ধাপ। প্রোডিউসার ও কনজিউমার একসাথে পুনর্লিখন না করে, দলগুলো সীমানা স্তরে XML পেলোড রূপান্তর করে এবং নিচের দিকে JSON পাঠায়। AWS API Gateway, Apache Camel এবং MuleSoft সবই এই প্যাটার্ন নেটিভভাবে সমর্থন করে।

XML input
<bookstore>
  <book category="fiction">
    <title lang="en">The Great Gatsby</title>
    <author>F. Scott Fitzgerald</author>
    <year>1925</year>
    <price>10.99</price>
  </book>
  <book category="non-fiction">
    <title lang="en">Sapiens</title>
    <author>Yuval Noah Harari</author>
    <year>2011</year>
    <price>14.99</price>
  </book>
</bookstore>
JSON output
{
  "bookstore": {
    "book": [
      {
        "@category": "fiction",
        "title": {
          "@lang": "en",
          "#text": "The Great Gatsby"
        },
        "author": "F. Scott Fitzgerald",
        "year": "1925",
        "price": "10.99"
      },
      {
        "@category": "non-fiction",
        "title": {
          "@lang": "en",
          "#text": "Sapiens"
        },
        "author": "Yuval Noah Harari",
        "year": "2011",
        "price": "14.99"
      }
    ]
  }
}

অনলাইন XML থেকে JSON কনভার্টার কেন ব্যবহার করবেন?

একটি এককালীন রূপান্তর স্ক্রিপ্ট লিখতে সময় লাগে, বিশেষত যখন XML-এ অ্যাট্রিবিউট, নেমস্পেস বা পুনরাবৃত্ত এলিমেন্ট থাকে যেগুলো JSON অ্যারে হওয়া দরকার। একটি ব্রাউজার-ভিত্তিক কনভার্টার কয়েক সেকেন্ডে JSON আউটপুট দেয় যাতে আপনি কাঠামো পরীক্ষা করে এগিয়ে যেতে পারেন।

তাৎক্ষণিক রূপান্তর
XML পেস্ট করুন এবং সঙ্গে সঙ্গে JSON আউটপুট পান। কোনো লাইব্রেরি ইনস্টল করা, স্ক্রিপ্ট লেখা বা বিল্ড টুল কনফিগার করার দরকার নেই।
🔒
গোপনীয়তা-কেন্দ্রিক প্রক্রিয়াকরণ
সম্পূর্ণ রূপান্তর আপনার ব্রাউজারে JavaScript ব্যবহার করে চলে। আপনার XML ডেটা কখনো আপনার ডিভাইসের বাইরে যায় না, কোনো সার্ভারে আপলোড হয় না।
🔀
অ্যাট্রিবিউট ও অ্যারে সাপোর্ট
অ্যাট্রিবিউটগুলো @-উপসর্গযুক্ত কীতে ম্যাপ করা হয়। পুনরাবৃত্ত এলিমেন্টগুলো স্বয়ংক্রিয়ভাবে JSON অ্যারেতে গ্রুপ করা হয়, Parker বা BadgerFish রীতি অনুসরণ করে।
📋
কোনো অ্যাকাউন্ট প্রয়োজন নেই
পৃষ্ঠাটি খুলুন, আপনার XML পেস্ট করুন এবং JSON ফলাফল কপি করুন। কোনো সাইন-আপ নেই, API কী নেই, ব্যবহারের সীমা নেই।

XML থেকে JSON রূপান্তরের ব্যবহারের ক্ষেত্র

ফ্রন্টেন্ড ডেভেলপমেন্ট
XML API রেসপন্সকে JSON-এ রূপান্তর করুন যাতে আপনি React, Vue বা Angular কম্পোনেন্টে ডেটা রেন্ডার করতে পারেন, ক্লায়েন্ট বান্ডেলে XML পার্সিং লাইব্রেরি না যোগ করেই।
ব্যাকেন্ড ইঞ্জিনিয়ারিং
মাইক্রোসার্ভিসে JSON ইনপুট পাঠানোর আগে API গেটওয়ে স্তরে SOAP পেলোড, RSS/Atom ফিড বা XML-RPC রেসপন্স JSON-এ রূপান্তর করুন।
ডেভঅপস ও CI/CD
ড্যাশবোর্ড, Slack বট বা কাস্টম CI নোটিফিকেশন পাইপলাইনে ইনজেস্ট করার জন্য XML টেস্ট রিপোর্ট (JUnit, NUnit, xUnit) JSON-এ রূপান্তর করুন।
QA ও পরীক্ষা
রিলিজের মধ্যে XML আউটপুট দেয় এমন সার্ভিসের রেসপন্স কাঠামো পরিবর্তন হয়নি তা যাচাই করতে প্রত্যাশিত আউটপুটের বিপরীতে রূপান্তরিত JSON স্ন্যাপশট তুলনা করুন।
ডেটা ইঞ্জিনিয়ারিং
BigQuery, Snowflake বা Elasticsearch-এ লোড করার জন্য সরকারি পোর্টাল, আর্থিক ফিড (FIX, FIXML) বা স্বাস্থ্যসেবা সিস্টেম (HL7 CDA) থেকে XML এক্সপোর্ট JSON-এ রূপান্তর করুন।
ডেটা ফরম্যাট শেখা
ডেটা ইন্টারচেঞ্জ শিখছেন এমন শিক্ষার্থীরা কনভার্টারে XML নমুনা পেস্ট করে দেখতে পারেন কীভাবে এলিমেন্ট, অ্যাট্রিবিউট এবং নেস্টিং JSON কী, অবজেক্ট এবং অ্যারেতে ম্যাপ হয়।

XML থেকে JSON ম্যাপিং রেফারেন্স

XML ও JSON-এর ডেটা মডেল আলাদা। নিচের টেবিলটি দেখায় কীভাবে প্রতিটি XML কাঠামো সবচেয়ে প্রচলিত রীতিতে (অ্যাট্রিবিউটের জন্য @, অ্যাট্রিবিউটের পাশাপাশি থাকা টেক্সটের জন্য #text) JSON সমতুল্যে ম্যাপ হয়। কিছু কাঠামো, যেমন মিশ্র কন্টেন্ট ও কমেন্ট, JSON-এ কোনো মানসম্মত উপস্থাপনা নেই।

XML কাঠামোXML উদাহরণJSON সমতুল্য
Element<name>text</name>"name": "text"
Nested elements<a><b>1</b></a>"a": { "b": "1" }
Attributes<el attr="v"/>"el": { "@attr": "v" }
Text + attributes<el a="1">text</el>"el": { "@a": "1", "#text": "text" }
Repeated elements<r><i>1</i><i>2</i></r>"r": { "i": ["1", "2"] }
Mixed content<p>A <b>B</b> C</p>Varies by convention
CDATA<![CDATA[raw]]>"#cdata": "raw" or flattened
Namespacesxmlns:prefix="uri"Prefix preserved or stripped
Empty element<el/>"el": null or ""
Comments<!-- note -->Discarded (no JSON equivalent)

XML থেকে JSON রীতির তুলনা

XML থেকে JSON ম্যাপিং কীভাবে হবে তার কোনো একক মানদণ্ড নেই। তিনটি রীতি ব্যাপকভাবে ব্যবহৃত হয়, প্রতিটিতে অ্যাট্রিবিউট পরিচালনা, অ্যারে শনাক্তকরণ এবং টেক্সট সংরক্ষণের ক্ষেত্রে আলাদা আপোস আছে।

BadgerFish
প্রতিটি টেক্সট নোড $ কীতে যায়। অ্যাট্রিবিউটগুলো @-উপসর্গযুক্ত কী পায়। নেমস্পেসগুলো @xmlns এন্ট্রি হিসেবে সংরক্ষিত হয়। বিস্তারিত কিন্তু ক্ষতিহীন: ডেটা না হারিয়ে XML-এ ফিরে যাওয়া যায়।
Parker
অ্যাট্রিবিউট সম্পূর্ণ বাদ দেয় এবং শুধুমাত্র-টেক্সট এলিমেন্টকে সরাসরি মানে রূপান্তর করে। পুনরাবৃত্ত এলিমেন্টগুলো অ্যারে হয়ে যায়। সংক্ষিপ্ত ও পরিষ্কার, কিন্তু ধ্বংসাত্মক: অ্যাট্রিবিউট ও নেমস্পেস তথ্য বাদ পড়ে।
GData (Google Data)
টেক্সট কন্টেন্টের জন্য $t ব্যবহার করে এবং অ্যাট্রিবিউটগুলো কোনো উপসর্গ ছাড়াই শীর্ষ-স্তরের কী হিসেবে সংরক্ষণ করে। BadgerFish-এর বিস্তারিততা ও Parker-এর সরলতার মাঝামাঝি। ঐতিহাসিকভাবে Google API-তে ব্যবহৃত হতো।

কোড উদাহরণ

নিচে JavaScript, Python, Go এবং কমান্ড লাইনে XML থেকে JSON রূপান্তরের কার্যকরী উদাহরণ দেওয়া হলো। প্রতিটি উদাহরণ নেস্টেড এলিমেন্ট ও পুনরাবৃত্ত ভাই ট্যাগ পরিচালনা করে।

JavaScript (browser)
// Using the DOMParser API to walk XML and build a JSON object
function xmlToJson(xml) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(xml, 'application/xml')

  function nodeToObj(node) {
    const obj = {}
    // Handle attributes
    if (node.attributes) {
      for (const attr of node.attributes) {
        obj['@' + attr.name] = attr.value
      }
    }
    // Handle child nodes
    for (const child of node.childNodes) {
      if (child.nodeType === 3) { // text
        const text = child.textContent.trim()
        if (text) obj['#text'] = text
      } else if (child.nodeType === 1) { // element
        const key = child.nodeName
        const val = nodeToObj(child)
        if (obj[key]) {
          if (!Array.isArray(obj[key])) obj[key] = [obj[key]]
          obj[key].push(val)
        } else {
          obj[key] = val
        }
      }
    }
    // Simplify text-only nodes
    const keys = Object.keys(obj)
    if (keys.length === 1 && keys[0] === '#text') return obj['#text']
    return obj
  }

  return nodeToObj(doc.documentElement)
}

const xml = '<user><name>Alice</name><role>admin</role></user>'
console.log(JSON.stringify(xmlToJson(xml), null, 2))
// → { "name": "Alice", "role": "admin" }
Python
import xmltodict
import json

xml = """
<user>
  <name>Alice</name>
  <roles>
    <role>admin</role>
    <role>editor</role>
  </roles>
</user>
"""

# xmltodict converts XML to an OrderedDict
result = xmltodict.parse(xml)
print(json.dumps(result, indent=2))
# → {
# →   "user": {
# →     "name": "Alice",
# →     "roles": { "role": ["admin", "editor"] }
# →   }
# → }

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

def etree_to_dict(elem):
    d = {}
    if elem.attrib:
        d.update({f"@{k}": v for k, v in elem.attrib.items()})
    for child in elem:
        child_data = etree_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(child_data)
        else:
            d[child.tag] = child_data
    if elem.text and elem.text.strip():
        if d:
            d["#text"] = elem.text.strip()
        else:
            return elem.text.strip()
    return d

root = ET.fromstring(xml)
print(json.dumps(etree_to_dict(root), indent=2))
Go
package main

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

// For simple, known schemas — define a struct
type User struct {
    XMLName xml.Name `xml:"user"`
    Name    string   `xml:"name"`
    Roles   []string `xml:"roles>role"`
}

func main() {
    data := `<user><name>Alice</name><roles><role>admin</role><role>editor</role></roles></user>`
    var user User
    xml.NewDecoder(strings.NewReader(data)).Decode(&user)

    out, _ := json.MarshalIndent(user, "", "  ")
    fmt.Println(string(out))
    // → { "Name": "Alice", "Roles": ["admin", "editor"] }
}
CLI (xmllint + jq / yq)
# Using xq (part of yq, a jq wrapper for XML)
# Install: pip install yq  OR  brew install yq
echo '<user><name>Alice</name></user>' | xq .
# → { "user": { "name": "Alice" } }

# Using xmlstarlet + jq
xmlstarlet sel -t -v '//name' input.xml | jq -R '{ name: . }'

# Node.js one-liner with xml2js
echo '<a><b>1</b></a>' | node -e "
  const {parseString} = require('xml2js');
  let d=''; process.stdin.on('data',c=>d+=c);
  process.stdin.on('end',()=>parseString(d,(e,r)=>console.log(JSON.stringify(r,null,2))))
"

প্রায়শই জিজ্ঞাসিত প্রশ্ন

XML থেকে JSON রূপান্তর কি ক্ষতিহীন?
সবসময় নয়। XML অ্যাট্রিবিউট, কমেন্ট, প্রসেসিং ইনস্ট্রাকশন এবং নেমস্পেস ডিক্লারেশনের কোনো সরাসরি JSON সমতুল্য নেই। বেশিরভাগ কনভার্টার @-উপসর্গ রীতি ব্যবহার করে অ্যাট্রিবিউট সংরক্ষণ করে, কিন্তু কমেন্ট ও প্রসেসিং ইনস্ট্রাকশন বাদ পড়ে। সম্পূর্ণ বিপরীতযোগ্য রাউন্ড-ট্রিপ প্রয়োজন হলে BadgerFish-এর মতো ক্ষতিহীন রীতি ব্যবহার করুন।
JSON-এ XML অ্যাট্রিবিউট কীভাবে উপস্থাপিত হয়?
সবচেয়ে প্রচলিত পদ্ধতি হলো অ্যাট্রিবিউটের নামে @ উপসর্গ দেওয়া। উদাহরণস্বরূপ, <book id="1"> হয়ে যায় {"@id": "1"}। কিছু কনভার্টার পরিবর্তে একটি নেস্টেড "_attributes" অবজেক্ট ব্যবহার করে। নির্দিষ্ট রীতি আপনি যে লাইব্রেরি ব্যবহার করেন তার উপর নির্ভর করে।
কনভার্টার পুনরাবৃত্ত XML এলিমেন্ট কীভাবে পরিচালনা করে?
যখন কোনো এলিমেন্ট একই প্যারেন্টের অধীনে একাধিকবার দেখা যায়, কনভার্টার সেগুলো JSON অ্যারেতে গ্রুপ করে। উদাহরণস্বরূপ, দুটি item ভাই এলিমেন্ট হয়ে যায় {"item": ["a", "b"]}। একটি একক item এলিমেন্ট সরাসরি স্ট্রিং মান হিসেবে থাকে যদি না ফোর্স-অ্যারে মোড চালু থাকে।
আমি কি JSON থেকে XML-এ ফিরে রূপান্তর করতে পারি?
হ্যাঁ, কিন্তু ফলাফল মূল রূপান্তরে ব্যবহৃত রীতির উপর নির্ভর করে। @ উপসর্গ দিয়ে অ্যাট্রিবিউট সংরক্ষিত থাকলে, JSON-থেকে-XML কনভার্টার সেগুলো পুনর্নির্মাণ করতে পারে। মূল রূপান্তরে Parker ব্যবহার হলে (যা অ্যাট্রিবিউট বাদ দেয়) সেই তথ্য হারিয়ে গেছে। বিপরীত রূপান্তরের জন্য ToolDeck-এর JSON থেকে XML টুলও রয়েছে।
রূপান্তরের সময় XML নেমস্পেসের কী হয়?
নেমস্পেস পরিচালনা লাইব্রেরি অনুযায়ী আলাদা হয়। কিছু কনভার্টার কী নামে উপসর্গ রাখে (যেমন "ns:element"), অন্যরা xmlns ডিক্লারেশন আলাদা ফিল্ডে ম্যাপ করে, আর কেউ কেউ নেমস্পেস সম্পূর্ণ বাদ দেয়। আপনার নির্দিষ্ট XML-এর জন্য নেমস্পেস আচরণ যাচাই করতে আউটপুট পরীক্ষা করুন।
XML থেকে JSON রূপান্তরের কোনো মানদণ্ড আছে কি?
কোনো আনুষ্ঠানিক W3C বা IETF মানদণ্ড নেই। সবচেয়ে কাছের রেফারেন্সগুলো হলো BadgerFish রীতি, Parker রীতি এবং OASIS XSLT-to-JSON ম্যাপিং। বাস্তবে প্রতিটি লাইব্রেরি নিজস্ব নিয়ম প্রয়োগ করে, তাই একই XML বিভিন্ন টুলে সামান্য ভিন্ন JSON তৈরি করতে পারে।
বড় XML ফাইল কীভাবে পরিচালনা করব?
ব্রাউজার-ভিত্তিক কনভার্টার কয়েক মেগাবাইট পর্যন্ত ফাইলের জন্য ভালো কাজ করে। বড় ফাইলের জন্য (১০ MB+), Python-এর iterparse (xml.etree.ElementTree) বা Node.js-এর xml-stream-এর মতো স্ট্রিমিং পার্সার ব্যবহার করুন। এগুলো সম্পূর্ণ ট্রি মেমোরিতে না নিয়ে ডকুমেন্ট একে একে প্রক্রিয়া করে।