XML ↔ JSON রূপান্তর কী?
XML (Extensible Markup Language) হলো hierarchical ডেটার জন্য একটি tag-ভিত্তিক টেক্সট ফরম্যাট। এটি SOAP web service, RSS ও Atom feed, HL7 FHIR health record, sitemap.xml ফাইল এবং Maven, Spring, ও Android Gradle-এর সাথে আসা configuration ফাইলে দেখা যায়। JSON (JavaScript Object Notation, RFC 8259 দ্বারা সংজ্ঞায়িত) একই ধরনের nested ডেটা বর্ণনা করে, কিন্তু opening ও closing tag-এর পরিবর্তে braces ও array দিয়ে। JSON হলো আজ প্রায় প্রতিটি REST API যা বলে, এবং প্রতিটি ব্রাউজার runtime-এর native value shape। দুটো ফরম্যাটের মধ্যে রূপান্তর করা সহজ মনে হয় যতক্ষণ না আপনি attribute, mixed content, repeated children, এবং CDATA-তে আঘাত খান। custom regex ভুল উত্তর; real parser সঠিক উত্তর। এই টুলে একটি real parser (fast-xml-parser) দেওয়া আছে এবং এটি আপনার ব্রাউজারে চলে, তাই আপনি একটি legacy SOAP সার্ভিসের ফেরত দেওয়া XML envelope পেস্ট করতে পারেন এবং দেখতে পারেন এটি Redux store-এ সরাসরি রাখা যাবে এমন JSON অবজেক্টে পরিণত হচ্ছে।
XML ↔ JSON mapping কীভাবে কাজ করে?
প্রতিটি রূপান্তর bundled fast-xml-parser লাইব্রেরি (MIT, version 4.x) ব্যবহার করে আপনার ব্রাউজারে locally চলে। উচ্চ-স্তরের mapping নিয়ম:
- Element থেকে key: প্রতিটি XML element নাম JSON object key হয়।
<user><name>Alice</name></user>{"user":{"name":"Alice"}}-এ map হয়। - Attribute থেকে prefixed key: একটি attribute বেছে নেওয়া prefix যোগ করে তৈরি key-এর অধীনে stored হয়। prefix
@দিয়ে,<user id="1">{"user":{"@id":"1"}}তৈরি করে। - Text content থেকে text-node key: যখন একটি element-এ attribute এবং text উভয়ই থাকে, text বেছে নেওয়া text-node key-এর অধীনে পড়ে। key
#textসহ<price currency="USD">9.99</price>{"price":{"@currency":"USD","#text":"9.99"}}তৈরি করে। - Repeated children থেকে array: পুনরাবৃত্ত child tag-এর জন্য array বাধ্য করুন চালু থাকলে, একই নামের একাধিক sibling element JSON array-এ collapse হয়।
<items><item>A</item><item>B</item></items>{"items":{"item":["A","B"]}}হয়। - CDATA section:
<![CDATA[…]]>-এর ভেতরের raw text#cdatakey-এর অধীনে সংরক্ষিত হয় যাতে round-trip-এ angle bracket ও ampersand পুনরায় escape না হয়। - JSON থেকে XML mapping উলটো করে: object key element হয়, prefixed key attribute হয়, এবং array repeated sibling element-এ প্রসারিত হয়।
এই টুল দিয়ে XML ও JSON কেন রূপান্তর করবেন?
- আপনার ডেটা আপনার মেশিনেই থাকে। প্রতিটি parse ও build এই পেজের JavaScript context-এ চলে। FHIR patient bundle, SOAP authentication envelope, proprietary config ফাইল, billing export — এর কিছুই আমাদের সার্ভার স্পর্শ করে না, কারণ code path-এ কোনো upload ধাপ নেই। নেটওয়ার্ক প্যানেল খুলুন এবং দেখুন।
- Legacy SOAP থেকে REST-first frontend হলো সবচেয়ে সাধারণ চাহিদা। একটি ব্যাংক বা বিমা কোম্পানি SOAP endpoint এক্সপোজ করে যা বছরের পর বছর retire হবে না; এটি call করা React বা Vue অ্যাপ XML শিখতে চায় না। envelope পেস্ট করুন, attribute prefix করা এবং namespace preserved রেখে JSON পান,
Bodyবিষয়বস্তু state store-এ রাখুন। - RSS, Atom, এবং sitemap consumer-রাও উপকৃত হন। একটি podcast directory, news aggregator, বা
sitemap.xmlইনজেস্ট করা internal dashboard XML parser লেখা সম্পূর্ণ এড়িয়ে যেতে পারে। feed একবার রূপান্তর করুন, JSON array দিয়ে কাজ করুন, এবং আপনার client code যে ভাষায় ইতিমধ্যে কথা বলে সেখানেই থাকুক। - Configuration export তালিকা সম্পূর্ণ করে। Maven, Spring, Android Gradle, এবং পুরনো Ant build সব XML emit করে; অন্য প্রান্তে cloud-native tooling (Terraform, Ansible, GitHub Actions, cloud-init) JSON বা YAML পড়ে। তৃতীয়-পক্ষের dependency সহ Python script চালানোর পরিবর্তে ব্রাউজারেই রূপান্তর করুন।
XML ↔ JSON রূপান্তরের সাধারণ প্রয়োগ কী?
XML ও JSON সেতুবন্ধন integration engineering, API tooling, এবং ডেটা engineering জুড়ে আসে। কিছু pattern কাজের বোঝা বেশি তৈরি করে:
- SOAP থেকে REST bridging: একটি legacy banking বা insurance API থেকে ফেরত পাওয়া SOAP envelope থেকে
Bodypayload বের করা এবং JSON-এ রূপান্তর করা যাতে React বা Vue frontend সামনে server-side proxy layer ছাড়াই এটি consume করতে পারে। - FHIR health record: HL7 FHIR XML bundle (HHS/ONC এবং NHS Digital দ্বারা clinical ডেটা exchange-এর জন্য প্রয়োজনীয় ফরম্যাট) JSON-এ রূপান্তর করা MongoDB Atlas collection বা PostgreSQL JSONB কলামে লোড করার জন্য যেখানে analyst query করতে পারেন।
- Sitemap ও feed processing: একটি
sitemap.xmlবা RSS/Atom feed JSON array-এ পরিণত করা যাতে custom indexer, Slack bot, বা dashboard widget XML parser dependency ছাড়াই entry iterate করতে পারে।
একটি XML ↔ JSON round-trip কেমন দেখায়?
একটি ছোট উদাহরণ নিন। ইনপুটে <user id="1"><name>Alice</name></user> পেস্ট করুন, attribute prefix @ সেট করুন, mode XML to JSON রাখুন, এবং Convert চাপুন। আউটপুট হলো {"user":{"@id":"1","name":"Alice"}}। mode JSON to XML-এ flip করুন, সেই JSON আবার পেস্ট করুন, indent ২ স্পেস সেট করুন, এবং আবার Convert চাপুন। আপনি পাবেন <user id="1">\n <name>Alice</name>\n</user>, মূলটির সাথে structurally একই। round-trip জুড়ে একমাত্র গ্যারান্টি না থাকা বিষয় হলো attribute order, কারণ JSON object key spec অনুযায়ী unordered।
এই XML ↔ JSON converter একই origin-এ bundled fast-xml-parser@4 ship করে, attribute, CDATA, repeated child tag, এবং namespace prefix handle করে, এবং পেজ লোড হলে offline কাজ চালিয়ে যায়। কোনো upload ধাপ নেই, কোনো CDN proxy নেই, কোনো analytics beacon নেই, কোনো ধরনের telemetry নেই। ইনপুট ও আউটপুটের প্রতিটি byte আপনার ব্রাউজারে থাকে, যা আপনি ঠিক চান যখন payload একটি FHIR patient bundle, SOAP authentication envelope, বা অন্য কোনো ধরনের ডেটা যা আপনার টিমের বাইরে কারো দেখা উচিত নয়।