JSON থেকে XML রূপান্তরকারী
JSON কে XML ফরম্যাটে রূপান্তর করুন
JSON ইনপুট
XML আউটপুট
JSON থেকে XML রূপান্তর কী?
JSON (JavaScript Object Notation) ও XML (eXtensible Markup Language) হলো সফটওয়্যার উন্নয়নে সবচেয়ে প্রচলিত দুটি ডেটা আদান-প্রদানের ফরম্যাট। JSON কী-মান জোড়া ও অ্যারে ব্যবহার করে সংক্ষিপ্ত সিনট্যাক্সে ডেটা উপস্থাপন করে, আর XML ডেটাকে শুরু ও শেষ ট্যাগে মুড়ে রাখে এবং ঐচ্ছিক অ্যাট্রিবিউট যোগ করা যায়। JSON থেকে XML রূপান্তর মানে JSON-এর কাঠামোগত মূল উপাদানগুলো — অবজেক্ট, অ্যারে, স্ট্রিং, সংখ্যা, বুলিয়ান ও null — একটি সুগঠিত XML ডকুমেন্টে যথাযথ নেস্টিং সহ অনুবাদ করা।
XML এখনও অনেক এন্টারপ্রাইজ সিস্টেম, সরকারি API, SOAP ওয়েব সার্ভিস এবং HL7 (স্বাস্থ্যসেবা), FpML (অর্থায়ন) ও XBRL (আর্থিক প্রতিবেদন)-এর মতো শিল্প মানদণ্ডে অপরিহার্য ফরম্যাট। আপনার অ্যাপ্লিকেশন JSON তৈরি করলে কিন্তু গ্রাহক সিস্টেম XML প্রত্যাশা করলে, একটি JSON থেকে XML কনভার্টার হাতে পুনর্গঠন ছাড়াই রূপান্তর সম্পন্ন করে। রূপান্তরটি সুনির্দিষ্ট নিয়ম মেনে চলে: JSON অবজেক্ট XML এলিমেন্ট হয়, অ্যারে আইটেম পুনরাবৃত্ত সহোদর এলিমেন্ট হয়, আর আদিম মান টেক্সট নোড হয়।
JSON থেকে XML রূপান্তরের জন্য কোনো একক RFC বা W3C মানদণ্ড নেই। ভিন্ন লাইব্রেরি একই ইনপুটের জন্য ভিন্ন আউটপুট তৈরি করে। সবচেয়ে প্রচলিত নিয়ম (এই টুলে ব্যবহৃত) হলো: সম্পূর্ণ ডকুমেন্টকে একটি কনফিগযোগ্য রুট এলিমেন্টে মোড়ানো, প্রতিটি JSON কীকে একটি XML চাইল্ড এলিমেন্টে রূপান্তর করা এবং অ্যারে আইটেমগুলোকে একই ট্যাগ নামের পুনরাবৃত্ত এলিমেন্ট হিসেবে উপস্থাপন করা। প্রাপক সিস্টেম যদি নির্দিষ্ট XML স্কিমা (XSD) প্রয়োগ করে তাহলে এই নিয়মগুলো বোঝা জরুরি।
কেন অনলাইন JSON থেকে XML কনভার্টার ব্যবহার করবেন?
JSON উৎস থেকে হাতে XML লেখা ক্লান্তিকর ও ত্রুটিপ্রবণ। ভুলভাবে মেলানো ট্যাগ, বাদ পড়া ক্লোজিং এলিমেন্ট ও ভুল নেস্টিং এমন ডকুমেন্ট তৈরি করে যা স্কিমা যাচাইয়ে ব্যর্থ হয়। একটি কনভার্টার কাঠামোগত রূপান্তর স্বয়ংক্রিয়ভাবে সম্পন্ন করে।
JSON থেকে XML ব্যবহারের ক্ষেত্র
JSON থেকে XML ম্যাপিং নিয়ম
JSON থেকে XML রূপান্তর নিয়ন্ত্রণের জন্য কোনো সার্বজনীন মানদণ্ড নেই, তাই ভিন্ন টুল ভিন্ন আউটপুট তৈরি করে। নিচের সারণি এই কনভার্টার ও সর্বাধিক প্রচলিত লাইব্রেরিতে (js2xmlparser, xmlbuilder, fast-xml-parser) ব্যবহৃত ম্যাপিং নিয়ম দেখায়। অ্যারের জন্য পুনরাবৃত্ত-সহোদর নিয়ম প্রভাবশালী হয়েছে কারণ এটি XML স্কিমা স্বাভাবিকভাবে সংগ্রহ মডেল করার পদ্ধতি প্রতিফলিত করে — প্রতিটি আইটেম একটি প্রথম-শ্রেণির এলিমেন্ট — এবং এটি XPath কুয়েরি ও XSLT রূপান্তরের সাথে ভালোভাবে কাজ করে।
| JSON Type | JSON Example | XML Output |
|---|---|---|
| Object | {"name": "Alice"} | <name>Alice</name> |
| Nested object | {"user": {"age": 30}} | <user><age>30</age></user> |
| Array | {"colors": ["red", "blue"]} | <colors>red</colors><colors>blue</colors> |
| String | "hello" | <root>hello</root> |
| Number | 42 | <root>42</root> |
| Boolean | true | <root>true</root> |
| Null | null | <root/> |
| Empty object | {} | <root/> |
| Empty array | [] | (no child elements) |
কোড উদাহরণ
নিচে তিনটি পরিবেশে JSON থেকে XML রূপান্তরের জন্য চালানোযোগ্য কোড দেওয়া হয়েছে। প্রতিটি উদাহরণ একটি নমুনা JSON অবজেক্ট থেকে সুগঠিত XML তৈরি করে।
import { create } from 'xmlbuilder2';
const json = {
order: {
id: 1024,
items: [
{ sku: "A1", qty: 2 },
{ sku: "B3", qty: 1 }
],
shipped: false
}
};
const xml = create({ version: '1.0' })
.ele(json)
.end({ prettyPrint: true });
console.log(xml);
// → <?xml version="1.0"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → <items>
// → <sku>B3</sku>
// → <qty>1</qty>
// → </items>
// → <shipped>false</shipped>
// → </order>import json
import xmltodict
data = {
"order": {
"id": 1024,
"items": [
{"sku": "A1", "qty": 2},
{"sku": "B3", "qty": 1}
],
"shipped": False
}
}
# xmltodict.unparse expects a single root key
xml = xmltodict.unparse(data, pretty=True)
print(xml)
# → <?xml version="1.0" encoding="utf-8"?>
# → <order>
# → <id>1024</id>
# → <items>
# → <sku>A1</sku>
# → <qty>2</qty>
# → </items>
# → <items>
# → <sku>B3</sku>
# → <qty>1</qty>
# → </items>
# → <shipped>false</shipped>
# → </order>package main
import (
"encoding/json"
"encoding/xml"
"fmt"
)
type Item struct {
SKU string `json:"sku" xml:"sku"`
Qty int `json:"qty" xml:"qty"`
}
type Order struct {
XMLName xml.Name `xml:"order"`
ID int `json:"id" xml:"id"`
Items []Item `json:"items" xml:"items"`
Shipped bool `json:"shipped" xml:"shipped"`
}
func main() {
raw := `{"id":1024,"items":[{"sku":"A1","qty":2},{"sku":"B3","qty":1}],"shipped":false}`
var order Order
json.Unmarshal([]byte(raw), &order)
out, _ := xml.MarshalIndent(order, "", " ")
fmt.Println(xml.Header + string(out))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <order>
// → <id>1024</id>
// → <items>
// → <sku>A1</sku>
// → <qty>2</qty>
// → </items>
// → ...
}