আপনার ডিভাইসেই চলে · আপনার ফাইল কখনও আপনার ডিভাইস ছেড়ে যায় না।
JSON পেস্ট করুন বা ফাইল দিন, আর পান এমন XML যার উপরে declaration আর প্রতিটা কি-র জন্য একটা করে এলিমেন্ট। উপরের স্তরে একটাই কি থাকলে সেটাই root এলিমেন্ট হয়; না হলে সব যায় <root>-এর ভেতরে। লিস্ট হলে ওই কি-র নামে কয়েকটা এলিমেন্ট বসে; উপরের স্তরে লিস্ট থাকলে <root>-এর ভেতরে <item> এলিমেন্ট হয়।
@ দিয়ে শুরু কি হয় অ্যাট্রিবিউট আর "#text" কি হয় এলিমেন্টের লেখা — XML to JSON টুল ঠিক এই আকারেই লেখে, তাই সেখানে কনভার্ট করা ডকুমেন্ট এখানে একই XML হয়ে ফেরে। বাকি প্রতিটা মান তার এলিমেন্টের ভেতরে লেখা হিসেবে বসে, null হয় ফাঁকা এলিমেন্ট, আর প্রতিটা স্তরে দুই স্পেস ইনডেন্ট থাকে বলে টেক্সট এডিটরে সহজে পড়া যায়। XML যে নামগুলো মানে না — সংখ্যা দিয়ে শুরু, ফাঁকা জায়গা বা চিহ্নওয়ালা — সেগুলো আন্ডারস্কোর দিয়ে ঠিক করে নেওয়া হয়, তাই ফলটা সবসময় পার্স হয়।
লেখা ঠিকভাবে escape হয় (&, <, > আর অ্যাট্রিবিউটে উদ্ধৃতিচিহ্ন ও লাইন ব্রেক); কন্ট্রোল ক্যারেক্টার, যা XML 1.0 একেবারেই ধরতে পারে না, সরিয়ে ফেলা হয়। এনকোডিং UTF-8, আর ডাউনলোডের আগে প্রথম 200 লাইন দেখা যায়।
যার জন্য নয়: নির্দিষ্ট XML স্কিমা মেলানো (SOAP, RSS, কোনো ইনভয়েস স্ট্যান্ডার্ড) — এলিমেন্টের নাম আসে আপনার JSON-এর কি থেকে, স্কিমা থেকে নয়।
@ দিয়ে শুরু হওয়া কি হয় অ্যাট্রিবিউট, আর "#text" কি হয় এলিমেন্টের লেখা, তাই {"item": {"@id": 3, "#text": "A"}} থেকে আসে <item id="3">A</item>। ডকুমেন্টের উপরের স্তরে একটাই কি থাকলে সেটাই root এলিমেন্ট; না হলে সবকিছু যায় <root>-এর ভেতরে।
XML নামে যে অক্ষর চলে না, সেটা হয় আন্ডারস্কোর, আর যে নাম এমন অক্ষর দিয়ে শুরু, যা প্রথমে বসতে পারে না — যেমন অঙ্ক — তার সামনে একটা আন্ডারস্কোর বসে: "1st place" হয় <_1st_place>। কোলন থাকে শুধু তখন, যখন তার প্রিফিক্স আরও ওপরে ঘোষণা করা আছে, যেমন "@xmlns:soap"-এ; ঘোষণা ছাড়া "soap:Body" হয় <soap_Body>, কারণ নইলে কোনো namespace-সচেতন পার্সার এটা পড়ত না। যেকোনো লিপির অক্ষর চলে, তাই "নাম", "اسم" বা "名前"-এর মতো কি যেমন লেখা তেমনই থাকে।
প্রতিটা মান লেখা হয় টেক্সট হিসেবে, আর সংখ্যা ঠিক JSON-এ যেমন আছে: 1.0 থাকে 1.0, আর 12345678901234567890 প্রতিটা অঙ্ক রাখে। null আর ফাঁকা অবজেক্ট দুটোই হয় <note/>-এর মতো ফাঁকা এলিমেন্ট, আর ফাঁকা লিস্ট কিছুই লেখে না, তাই XML দেখে এই তিনটাকে আলাদা করা যায় না।
কন্ট্রোল ক্যারেক্টার — ট্যাব, লাইন ফিড আর ক্যারেজ রিটার্ন ছাড়া 32-এর নিচের কোড — XML 1.0-এ একেবারেই লেখা যায় না, -এর মতো সংখ্যা দিয়েও না, তাই সেগুলো সরিয়ে ফেলা হয়। ক্যারেজ রিটার্ন লেখা হয় হিসেবে, যাতে পার্সার সেটা রাখে। অ্যাট্রিবিউটের মানে উদ্ধৃতিচিহ্ন, ট্যাব আর লাইন ব্রেকও রেফারেন্স হিসেবে লেখা হয়, কারণ নইলে পার্সার এগুলোকে ফাঁকা জায়গা বানিয়ে দিত।
একই নামের এলিমেন্ট বারবার বসিয়ে লিস্টের শুধু এক স্তরই বোঝানো যায়। "m": [[1, 2], [3]] হয় তিনটা <m> এলিমেন্ট, তাতে 1, 2 আর 3, আর 1 ও 2 যে একসঙ্গে ছিল, সেই তথ্য হারিয়ে যায়। উপরের স্তরের লিস্টও একই আচরণ করে: [1, [3, 4]] থেকে আসে তিনটা <item> এলিমেন্ট। দলটা জরুরি হলে আগে প্রতিটা ভেতরের লিস্টকে একটা অবজেক্টে মুড়ে নিন: [{"values": [1, 2]}, {"values": [3]}] থেকে আসে দুটো <item> এলিমেন্ট, প্রত্যেকটার ভেতরে নিজের <values>।
XML to JSON (/xml-to-json) হয়ে আসা ডকুমেন্ট এখানে ফেরে একই এলিমেন্ট, অ্যাট্রিবিউট, namespace প্রিফিক্স আর লেখা নিয়ে, চারপাশে বাড়তি কোনো মোড়ক ছাড়া। যা JSON কখনো ধরেনি তা ফেরে না: কমেন্ট আর DOCTYPE, চাইল্ড এলিমেন্টগুলোর মাঝে লেখার অবস্থান, আর ভিন্ন নামের এলিমেন্টের মধ্যেকার ক্রম — সেগুলো ফেরে নাম ধরে দল বেঁধে। XML to JSON-এ টাইপ চেনানো চালু থাকলে TRUE-এর মতো মান ফেরে true হয়ে; শব্দে শব্দে মেলানো ফেরত চাইলে সেখানে টাইপ চেনানো বন্ধ রাখুন।
এই পাতা অন্য ভাষায়: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia