ভাষা বেছে নিন

এক্সএমএল থেকে জেসন কনভার্টার

ব্রাউজারেই এক্সএমএল ফাইলকে জেসন ফরম্যাটে রূপান্তর করুন। অ্যাট্রিবিউট সংরক্ষণ, স্বয়ংক্রিয় ডেটা টাইপ পার্সিং এবং ভ্যালু ট্রিম করার সুবিধা রয়েছে।

Mehmet Demiray (মেহমেত দেমিরায়) প্রকাশিত আপডেট হয়েছে
শেয়ার করুন
XML অ্যাট্রিবিউট অন্তর্ভুক্ত করার পরিবর্তে বাদ দিন
JSON আউটপুট ফরম্যাট করতে ব্যবহৃত স্পেসিং

এক্সএমএল এবং জেসন ডেটা মডেলের তুলনা

এক্সএমএল (XML) এবং জেসন (JSON) তথ্য প্রযুক্তির জগতে ডেটা আদান-প্রদানের জন্য বহুল ব্যবহৃত দুটি ভিন্ন ডেটা মডেল। এক্সএমএল বা এক্সটেনসিবল মার্কআপ ল্যাঙ্গুয়েজ ট্যাগ, অ্যাট্রিবিউট এবং টেক্সট নোডের একটি জটিল হাইরার্কি বা স্তরবিন্যাস তৈরি করে ডেটা সংরক্ষণ করে। অন্যদিকে জেসন বা জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন কি-ভ্যালু পেয়ার, অ্যারে এবং সাধারণ অবজেক্টের সমন্বয়ে অনেক হালকা একটি কাঠামো ব্যবহার করে। বাংলাদেশের ব্যাংকিং খাত, বিভিন্ন সরকারি পোর্টাল এবং পুরানো এপিআইগুলোতে এখনও এক্সএমএল ব্যাপকভাবে ব্যবহৃত হয়। কিন্তু যখন এই সিস্টেমগুলোকে আধুনিক ওয়েব বা মোবাইল অ্যাপ্লিকেশনের সাথে যুক্ত করার প্রয়োজন হয়, তখন জেসন বেশি কার্যকরী ভূমিকা পালন করে। এই দুই প্রযুক্তির মধ্যে সেতুবন্ধন তৈরি করতে এক্সএমএল থেকে জেসন টুলটি অত্যন্ত গুরুত্বপূর্ণ। জেসনে এক্সএমএল-এর মতো অ্যাট্রিবিউট বা মিক্সড কন্টেন্ট সংরক্ষণের কোনো সরাসরি উপায় নেই। তাই রূপান্তরের সময় ডেটার কাঠামোতে কিছু যৌক্তিক পরিবর্তন ঘটে। ডেভেলপাররা এই টুলের সাহায্যে ব্রাউজারেই সরাসরি ডেটা রূপান্তর করতে পারেন এবং আধুনিক সফটওয়্যার ডেভেলপমেন্টের কাজকে আরও গতিশীল করতে পারেন। আপনার ডেটার আকার যেমনই হোক না কেন, এই রূপান্তর প্রক্রিয়াটি নির্ভুলভাবে সম্পন্ন করা সম্ভব। প্রয়োজনে আপনি জেসন ফরম্যাটার ব্যবহার করে আউটপুট ডেটা গুছিয়ে নিতে পারেন।

ডেটা ম্যাপিং কীভাবে কাজ করে

এক্সএমএল ডেটাকে জেসনে রূপান্তর করার সময় ম্যাপিংয়ের নিয়মগুলো সঠিকভাবে বোঝা প্রত্যেক ডেটা ইঞ্জিনিয়ারের জন্য জরুরি। এক্সএমএল কাঠামোতে একটি ট্যাগের ভেতরে একাধিক অ্যাট্রিবিউট থাকতে পারে, কিন্তু জেসনে সরাসরি অ্যাট্রিবিউট রাখার কোনো সুযোগ নেই। এক্সএমএল থেকে জেসন টুলটি এই সমস্যার সমাধানে অ্যাট্রিবিউটের নামের আগে একটি নির্দিষ্ট প্রিফিক্স যুক্ত করে। সাধারণত @ বা _ চিহ্ন ব্যবহার করে অ্যাট্রিবিউটগুলোকে জেসন অবজেক্টের একটি কি বা চাবি হিসেবে তৈরি করা হয়। উদাহরণস্বরূপ, যদি আপনার এক্সএমএল ফাইলে একটি এমপ্লয়ি ট্যাগ থাকে যার আইডি অ্যাট্রিবিউট রয়েছে, তবে জেসনে সেটি একটি অবজেক্টে রূপান্তরিত হবে যেখানে আইডি অ্যাট্রিবিউটটি প্রিফিক্সসহ সংরক্ষিত হবে। এছাড়া, এক্সএমএল-এ যদি একই নামের একাধিক ট্যাগ থাকে, তবে টুলটি স্বয়ংক্রিয়ভাবে সেগুলোকে জেসন অ্যারেতে রূপান্তর করে। ধরা যাক, কোনো ই-কমার্স ইনভেন্টরিতে একাধিক প্রোডাক্ট ট্যাগ রয়েছে। জেসনে রূপান্তরের পর সেগুলো একটি প্রোডাক্ট অ্যারে হিসেবে প্রদর্শিত হবে, ফলে কোনো ডেটা ওভাররাইট হওয়ার ভয় থাকে না। রূপান্তর শেষে আপনি খুব সহজেই জেসন ডেটা কপি করে নিতে পারবেন অথবা ফাইল হিসেবে ডাউনলোড করে নিজের প্রজেক্টে ব্যবহার করতে পারবেন। এই ধরনের কাজ আরও সহজে করতে অনেকেই সিএসভি থেকে জেসন রূপান্তরকারী টুলেরও সাহায্য নেন।

টাইপ কোয়ার্শন বা ডেটা টাইপ রূপান্তরের অপশন

এক্সএমএল কাঠামোর একটি বড় সীমাবদ্ধতা হলো এর ভেতরের প্রায় সব ডেটাই মূলত টেক্সট বা স্ট্রিং হিসেবে সংরক্ষিত থাকে। কিন্তু আধুনিক অ্যাপ্লিকেশন ডেভেলপমেন্টে শুধুমাত্র স্ট্রিং দিয়ে কাজ করা সম্ভব নয়। জেসন স্ট্রিং ছাড়াও নাম্বার এবং বুলিয়ান ডেটা টাইপ সরাসরি সমর্থন করে। এক্সএমএল থেকে জেসন টুলটি ব্যবহার করার সময় আপনি টাইপ কোয়ার্শন বা ডেটা টাইপ রূপান্তরের বিশেষ অপশনগুলো চালু করতে পারেন। এর ফলে টুলটি এক্সএমএল টেক্সট নোডগুলো বিশ্লেষণ করে সংখ্যা এবং বুলিয়ান মানগুলোকে স্বয়ংক্রিয়ভাবে সঠিক জেসন ডেটা টাইপে রূপান্তর করে। যেমন, আপনার ডেটাতে যদি কোনো পণ্যের দাম লেখা থাকে, তবে অপশনটি চালু থাকলে সেটি জেসনে স্ট্রিং না হয়ে সরাসরি ৫০০ এর মতো নাম্বার হিসেবে সংরক্ষিত হবে। এটি ডেটাবেস অপারেশন এবং এপিআই ইন্টিগ্রেশনের ক্ষেত্রে অনেক সুবিধা প্রদান করে। পাশাপাশি, ডেটার শুরুতে বা শেষে থাকা অপ্রয়োজনীয় স্পেস মুছে ফেলার জন্য ভ্যালু ট্রিম করার অপশনও এই টুলে রয়েছে। এতে করে আপনার জেসন আউটপুটটি আরও পরিচ্ছন্ন হয় এবং পার্সিং এরর হওয়ার সম্ভাবনা কমে যায়।

রূপান্তরের সময় যেসব তথ্য হারিয়ে যেতে পারে

এক্সএমএল এবং জেসনের কাঠামোগত পার্থক্যের কারণে রূপান্তর প্রক্রিয়াটি সব সময় শতভাগ নিখুঁত বা লসলেস হয় না। কিছু নির্দিষ্ট ক্ষেত্রে ডেটার মূল বৈশিষ্ট্য হারিয়ে যেতে পারে। এক্সএমএল নেমস্পেসগুলো সাধারণত জেসনে সরলীকরণ করা হয় বা অনেক ক্ষেত্রে সম্পূর্ণ বাদ দেওয়া হয়, কারণ জেসনে নেমস্পেসের কোনো ডিফল্ট সমর্থন নেই। মিক্সড কন্টেন্ট হলো আরেকটি জটিল বিষয়। যখন একটি এক্সএমএল ট্যাগের ভেতরে সাধারণ টেক্সট এবং অন্যান্য চাইল্ড ট্যাগ একসাথে থাকে, তখন তা জেসনে সঠিকভাবে উপস্থাপন করা অত্যন্ত কঠিন হয়ে পড়ে এবং টুলটি বাধ্য হয়ে সেটিকে একটি সরল রূপে নিয়ে আসে। এছাড়া, এক্সএমএল ডকুমেন্টে ট্যাগগুলোর ক্রম বা অর্ডার অনেক সময় গুরুত্বপূর্ণ অর্থ বহন করে। কিন্তু জেসন অবজেক্টে কি-গুলোর কোনো নির্দিষ্ট ক্রম থাকে না, এগুলো মূলত আনঅর্ডারড কালেকশন। তাই এক্সএমএল থেকে জেসন টুল ব্যবহার করে ডেটা রূপান্তর করার পর পুনরায় সেই জেসন থেকে হুবহু আগের এক্সএমএল ফিরে পাওয়া প্রায় অসম্ভব। এই ধরনের রিভার্স বা বিপরীতমুখী কাজের জন্য জেসন থেকে এক্সএমএল রূপান্তর করার সময় ডেভেলপারদের ডেটা লস সম্পর্কে আগে থেকেই সতর্ক থাকতে হয়।

সচরাচর জিজ্ঞাসিত প্রশ্ন

এক্সএমএল ডেটা নিয়ে কাজ করার সময় ডেভেলপারদের মনে বেশ কিছু সাধারণ প্রশ্ন আসে। নিচে এর কয়েকটি গুরুত্বপূর্ণ প্রশ্নের উত্তর দেওয়া হলো।

জেসনে এক্সএমএল অ্যাট্রিবিউটের আগে প্রিফিক্স কেন প্রয়োজন হয়? জেসন ডেটা মডেলে চাইল্ড এলিমেন্ট এবং অ্যাট্রিবিউটের মধ্যে পার্থক্য করার কোনো নিজস্ব ব্যবস্থা নেই। তাই এক্সএমএল থেকে জেসন টুল অ্যাট্রিবিউটের নামের আগে একটি প্রিফিক্স যুক্ত করে, যাতে মূল টেক্সট ডেটা এবং অ্যাট্রিবিউটের মধ্যে পার্থক্য স্পষ্টভাবে বজায় থাকে।

একাধিক একই নামের এক্সএমএল ট্যাগ জেসনে কীভাবে দেখায়? যখন কোনো এক্সএমএল ফাইলে একই স্তরে একই নামের একাধিক ট্যাগ থাকে, তখন টুলটি সেগুলোকে একত্রিত করে একটি জেসন অ্যারে তৈরি করে। এর ফলে কোনো একক ডেটা হারিয়ে যায় না এবং জেসনের কাঠামো প্রোগ্রামিংয়ের জন্য সুবিধাজনক হয়।

এই টুলের মাধ্যমে কি সোপ রেসপন্স রূপান্তর করা সম্ভব? হ্যাঁ, পুরানো সিস্টেমের সোপ রেসপন্স রূপান্তর করা সম্ভব। তবে সোপ মেসেজে ব্যবহৃত জটিল নেমস্পেসগুলো জেসনে সরল ফর্মে চলে আসে, যা ইন্টিগ্রেশনের সময় মাথায় রাখতে হয়।

সিডেটা এবং এক্সএমএল কমেন্টগুলোর কী হয়? রূপান্তরের সময় সিডেটা ব্লকগুলো সাধারণ টেক্সট বা স্ট্রিং হিসেবে জেসনের ভ্যালুতে যুক্ত হয়। তবে এক্সএমএল ফাইলের ভেতরের কমেন্টগুলো সাধারণত জেসন আউটপুটে স্থান পায় না এবং প্রক্রিয়াকরণের সময় বাদ পড়ে যায়।

যেগুলোর উত্তর আমরা সবচেয়ে বেশি দিই।

জেসনে এক্সএমএল অ্যাট্রিবিউটগুলোর আগে কেন একটি প্রিফিক্স বা উপসর্গ ব্যবহার করা হয়?

এক্সএমএল নোডে টেক্সট এবং অ্যাট্রিবিউট উভয়ই থাকতে পারে। জেসনে যেহেতু অ্যাট্রিবিউট বলে আলাদা কিছু নেই, তাই এগুলোকে সাধারণ কি (key) হিসেবে রূপান্তর করতে হয়। মূল টেক্সট বা চাইল্ড নোডের নামের সাথে যাতে অ্যাট্রিবিউটের নাম মিলে গিয়ে ডেটা হারিয়ে না যায়, সেজন্য 'এক্সএমএল থেকে জেসন' টুলটি অ্যাট্রিবিউটের আগে একটি প্রিফিক্স বসিয়ে দেয়।

এক্সএমএল ফাইলে একই নামের একাধিক ট্যাগ থাকলে জেসনে সেগুলো কীভাবে দেখাবে?

যখন আপনি কোনো এক্সএমএল ফাইলে একই নামের একাধিক ট্যাগ ব্যবহার করেন, তখন টুলটি সেগুলোকে জেসন অ্যারে হিসেবে রূপান্তর করে। এর ফলে ডেটার ক্রম এবং গঠন ঠিক থাকে। আপনি চাইলে রূপান্তরিত ডেটাটি আরও সুন্দরভাবে সাজাতে আমাদের জেসন ফরম্যাটার ব্যবহার করতে পারেন।

আমি কি এই টুল দিয়ে লিগ্যাসি সিস্টেমের সোপ (SOAP) রেসপন্স কনভার্ট করতে পারব?

হ্যাঁ, আপনি সোপ এপিআই থেকে পাওয়া রেসপন্স খুব সহজেই জেসনে রূপান্তর করতে পারবেন। তবে সোপ রেসপন্সে সাধারণত অনেক নেমস্পেস থাকে। আমাদের টুলটি এই নেমস্পেসগুলোকে সাধারণ টেক্সট হিসেবে ধরে জেসন কি-তে রূপান্তর করে। ফলে আপনি আধুনিক রেস্ট (REST) এপিআই বা ফ্রন্টএন্ড অ্যাপ্লিকেশনে ডেটাগুলো সহজে ব্যবহার করতে পারবেন।

এক্সএমএল ফাইলের সিডেটা (CDATA) এবং কমেন্টগুলোর কী হবে?

জেসন ফরম্যাটে কমেন্ট রাখার কোনো ডিফল্ট ব্যবস্থা নেই, তাই রূপান্তরের সময় এক্সএমএল কমেন্টগুলো বাদ দেওয়া হয়। অন্যদিকে, সিডেটা ব্লকের ভেতরের লেখাগুলোকে সাধারণ স্ট্রিং বা টেক্সট ভ্যালু হিসেবে জেসনে যুক্ত করা হয়। ফলে আপনার মূল ডেটা সম্পূর্ণ সুরক্ষিত থাকে।

এক্সএমএলের ভেতরের সংখ্যা বা বুলিয়ান ভ্যালুগুলো কি জেসনে স্ট্রিং হিসেবেই থেকে যাবে?

এক্সএমএলে সব ডেটাই মূলত টেক্সট হিসেবে থাকে। তবে 'এক্সএমএল থেকে জেসন' টুলে পার্সিং অপশন চালু করলে এটি স্বয়ংক্রিয়ভাবে সংখ্যা এবং বুলিয়ান ভ্যালুগুলো শনাক্ত করতে পারে। এর ফলে জেসন আউটপুটে এগুলো আর স্ট্রিং হিসেবে না থেকে সঠিক ডেটা টাইপ হিসেবেই সেভ হয়, যা ডেটাবেস বা অ্যাপ্লিকেশনের জন্য বেশ উপকারী।

রূপান্তরিত জেসন থেকে কি হুবহু আগের এক্সএমএল ফাইলটি ফিরে পাওয়া সম্ভব?

বেশিরভাগ ক্ষেত্রে মূল ডেটা ঠিক থাকলেও হুবহু আগের এক্সএমএল গঠনটি ফিরে পাওয়া কঠিন হতে পারে। কারণ রূপান্তরের সময় এক্সএমএলের নেমস্পেস, কমেন্ট এবং মিক্সড কনটেন্ট কিছুটা সরল হয়ে যায়। আপনি যদি জেসন ডেটাসেটকে আবার এক্সএমএলে নিতে চান, তবে জেসন থেকে এক্সএমএল রূপান্তরকারী টুলটি ব্যবহার করে দেখতে পারেন।

বড় এক্সএমএল ফিড প্রসেস করার সময় ডেটা কি সার্ভারে আপলোড হয়?

না, আপনার সম্পূর্ণ ডেটা সরাসরি ব্রাউজারেই প্রসেস করা হয়। আপনার যদি ৫ MB বা তার চেয়ে বড় সাইজের কোনো এক্সএমএল ফাইলও থাকে, তবুও সেটি আমাদের সার্ভারে আপলোড হবে না। 'এক্সএমএল থেকে জেসন' টুলটি ক্লায়েন্ট সাইডে কাজ করে বলে ব্যাংকিং বা কর্পোরেট লিগ্যাসি ফিডের মতো সংবেদনশীল ডেটা সম্পূর্ণ নিরাপদ থাকে।