XML থেকে CSV

আপনার ডিভাইসেই চলে · আপনার ফাইল কখনও আপনার ডিভাইস ছেড়ে যায় না।

একই রকম রেকর্ডে ভরা XML দিন — <records><record>…</record>…</records>, কোনো RSS ফিড, বা ডেটাবেস থেকে নেওয়া এক্সপোর্ট — আর পান এমন CSV যাতে প্রতি রেকর্ড এক সারি। ডকুমেন্টটা পড়ে ব্রাউজারের নিজের XML পার্সার, তারপর একই নামের এলিমেন্টের সবচেয়ে লম্বা তালিকাটা নিজে থেকেই খুঁজে বের করা হয়, তাকে যা-ই মুড়ে রাখুক — মোড়কের অ্যাট্রিবিউট, বা আইটেমগুলোর পাশে ফিডের নিজের title আর link — আর ফলের লাইন জানায় কোন তালিকা নেওয়া হলো।

প্রতিটা রেকর্ড সমতল করা হয় ঠিক যেভাবে JSON to CSV টুলে হয়: ভেতরের এলিমেন্ট ডট দেওয়া কলাম হয় (address.city), অ্যাট্রিবিউট @ দিয়ে শুরু কলাম হয় (@id), নিজেরও চাইল্ড আছে এমন একই নামের ভেতরের এলিমেন্ট নম্বর দেওয়া কলাম পায় (line.0.sku), শুধু লেখা ধরা একই নামের এলিমেন্ট সেমিকোলন দিয়ে জোড়া হয় (a;b), আর হেডার সারিতে পাওয়া সব কলাম একসঙ্গে বসে। মান লেখা হয় ঠিক XML-এ যেমন আছে।

CSV হয় UTF-8-এ, Excel-এর জন্য চাইলে BOM সহ; বিভাজক আপনি বেছে নেন, আর ডাউনলোডের আগে প্রথম 200 লাইন দেখে নেওয়া যায়।

XML থেকে CSV: কীভাবে করবেন

  1. XML ফাইল দিন, বা বাক্সে XML পেস্ট করুন।
  2. বিভাজক আর Excel BOM লাগবে কি না বেছে নিন।
  3. «CSV-এ কনভার্ট করুন» চেপে প্রিভিউ দেখুন।
  4. .csv ডাউনলোড করুন।

সমর্থিত ফরম্যাট ও সীমা

ইনপুট
XML (.xml) — ফাইল বা পেস্ট করা লেখা, ঘোষিত এনকোডিংয়ে পড়া
আউটপুট
CSV, RFC 4180, UTF-8, চাইলে BOM
সারি
একই নামের এলিমেন্টের সবচেয়ে লম্বা তালিকা
Nesting
ভেতরের এলিমেন্ট → ডট কলাম; অ্যাট্রিবিউট → @ কলাম
যেখানে চলে
আপনার ব্রাউজারেই — আপলোড ছাড়া

যার জন্য নয়: রেকর্ডের কয়েকটা তালিকা আছে এমন ডকুমেন্ট — শুধু সবচেয়ে লম্বাটা সারি হয়; অন্যটার জন্য JSON-এ নিন, সেই তালিকা কপি করে JSON to CSV দিয়ে কনভার্ট করুন।

সারিগুলো কীভাবে খোঁজা হয়

সারি হলো root-এর নিচে যেকোনো জায়গায় একই নামে বারবার আসা এলিমেন্টের সবচেয়ে লম্বা তালিকা, তাকে যা-ই মুড়ে রাখুক। <records count="2"><record>…</record><record>…</record></records> থেকে প্রতিটা <record>-এ এক সারি আসে, মোড়কে অ্যাট্রিবিউট থাকলেও। RSS ফিড থেকে প্রতিটা <item>-এ এক সারি, title, link আর pubDate-এর মতো কলামসহ, যদিও চ্যানেলের নিজের title আর link আইটেমগুলোর পাশেই বসে থাকে। ফলের নিচের লাইন জানায় কোন তালিকা নেওয়া হলো, যেমন rss.channel.item।

তালিকার পাশের মান, যেমন ফিডের নিজের title, কোনো রেকর্ডের অংশ নয়, তাই বাদ পড়ে। ডকুমেন্টে রেকর্ডের কয়েকটা তালিকা থাকলে শুধু সবচেয়ে লম্বাটা সারি হয়। অন্যটা চাইলে ফাইলটা XML to JSON (/xml-to-json) দিয়ে কনভার্ট করুন, সেই তালিকা তার [ থেকে ] পর্যন্ত কপি করুন, তারপর JSON to CSV (/json-to-csv) পাতায় পেস্ট করে কনভার্ট করুন।

একটামাত্র রেকর্ডের ফাইল

বারবার আসা কোনো এলিমেন্ট না থাকলে একমাত্র রেকর্ডটাই একটা সারি, আর তার কলাম হয় তার নিজের ফিল্ডের নাম: <records><record><name>Ali</name><city>Cairo</city></record></records> থেকে কলাম হয় name আর city। তাই যে ফাইলে কখনো একটা রেকর্ড থাকে আর কখনো অনেক, তার হেডার একই থাকে — অন্য কোনো প্রোগ্রাম নাম ধরে কলাম পড়লে এটা জরুরি।

মানগুলো কীভাবে লেখা হয়

মান লেখা হয় ঠিক XML-এ যেমন আছে: 1.50 থাকে 1.50, TRUE থাকে TRUE, আর NULL লেখা এলিমেন্ট দেয় NULL লেখা, যেখানে ফাঁকা এলিমেন্ট দেয় ফাঁকা ঘর। 007 তার শূন্যগুলো রাখে, তারিখ যেমন লেখা তেমন থাকে। =, +, - বা @ দিয়ে শুরু হওয়া মানের সামনে একটা অ্যাপোস্ট্রফি বসে, ঠিক JSON to CSV পাতার (/json-to-csv) মতো, যাতে স্প্রেডশিট এটাকে ফর্মুলা হিসেবে না চালায়।

শুধু লেখা ধরা, বারবার আসা চাইল্ড এলিমেন্টগুলো সেমিকোলন দিয়ে এক ঘরে জোড়া হয়, তাই দুটো <tag> এলিমেন্ট থেকে আসে a;b। যেসব বারবার আসা চাইল্ড এলিমেন্টের নিজেরও চাইল্ড আছে, সেগুলো পায় নম্বর দেওয়া কলাম, যেমন line.0.sku আর line.1.sku। namespace প্রিফিক্স কলামের নামে থেকে যায়, যেমন soap:Body.price। চাইল্ড এলিমেন্টের পাশে বসা লেখা যায় #text কলামে, তাদের মাঝে নিজের অবস্থান ছাড়াই। ফাইল পড়া হয় তার প্রথম লাইনে ঘোষিত এনকোডিংয়ে।

সাধারণ জিজ্ঞাসা

কোন এলিমেন্টগুলো সারি হবে সেটা ঠিক হয় কীভাবে?
root-এর নিচে একই নামের এলিমেন্টের সবচেয়ে লম্বা তালিকাটাই সারি হয় — <records><record>…</record></records> থেকে প্রতিটা <record>-এ এক সারি, RSS ফিড থেকে প্রতিটা <item>-এ এক সারি। তালিকার পাশের মান, যেমন ফিডের নিজের title, বাদ পড়ে। বারবার আসা কোনো এলিমেন্ট না থাকলে একমাত্র রেকর্ডটাই এক সারি হয়, তার নিজের ফিল্ডের নাম কলাম হয়ে।
আমার ফাইল কি কোনো সার্ভারে আপলোড হয়?
না। পুরো কাজটা হয় আপনার ব্রাউজারেই, আপনার নিজের ফোন বা কম্পিউটারের ক্ষমতায়। ফাইল ডিভাইস ছেড়ে কোথাও যায় না। কোনো টুল একবার ব্যবহার করা হয়ে গেলে ইন্টারনেট ছাড়াও সেটা চলে — ভিডিও, লেখা চেনা আর ব্যাকগ্রাউন্ড সরানোর টুল প্রথমবার নিজের ইঞ্জিন এই সাইট থেকে নামিয়ে নেয়, তারপর ব্রাউজার সেটা রেখে দেয়।
Excel-এ বাংলা ভেঙে যাচ্ছে?
«Excel-এর জন্য BOM যোগ করুন» চালু রেখে ডাউনলোড করুন; তখন Excel ফাইলটা UTF-8 হিসেবেই পড়ে।
অ্যাট্রিবিউট কি বাদ পড়ে?
না; সেগুলো @ দিয়ে শুরু আলাদা কলাম হয়ে থাকে।
RSS ফিড চলবে?
চলবে; আইটেমগুলোই সারি হয়ে আসে।

সম্পর্কিত টুল

স্প্রেডশিট ও ডেটা বিভাগে আরও

এই পাতা অন্য ভাষায়: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia