আপনার ডিভাইসেই চলে · আপনার ফাইল কখনও আপনার ডিভাইস ছেড়ে যায় না।
একই রকম রেকর্ডে ভরা 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 লাইন দেখে নেওয়া যায়।
যার জন্য নয়: রেকর্ডের কয়েকটা তালিকা আছে এমন ডকুমেন্ট — শুধু সবচেয়ে লম্বাটা সারি হয়; অন্যটার জন্য 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 কলামে, তাদের মাঝে নিজের অবস্থান ছাড়াই। ফাইল পড়া হয় তার প্রথম লাইনে ঘোষিত এনকোডিংয়ে।
এই পাতা অন্য ভাষায়: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia