XML को CSV में बदलें

आपके डिवाइस पर चलता है · आपकी फ़ाइल कभी आपके डिवाइस से बाहर नहीं जाती।

दोहराए गए रिकॉर्ड वाली XML फ़ाइल डालिए — <records><record>…</record>…</records>, कोई RSS फ़ीड, डेटाबेस का एक्सपोर्ट — और हर रिकॉर्ड की एक पंक्ति वाला CSV पाइए। दस्तावेज़ ब्राउज़र के XML पार्सर से पढ़ा जाता है, फिर दोहराए गए एलिमेंट की सबसे लंबी लिस्ट अपने आप ढूँढ़ी जाती है, उसे चाहे जो लपेटे हो — आवरण पर कोई एट्रिब्यूट, या आइटम के बगल में फ़ीड का अपना title और link — और नतीजे की पंक्ति बताती है कि कौन सी लिस्ट ली गई।

हर रिकॉर्ड "JSON को CSV में बदलें" टूल की तरह ही सपाट किया जाता है: नेस्टेड एलिमेंट डॉट वाले कॉलम बनते हैं (address.city), एट्रिब्यूट @ लगे कॉलम (@id), भीतर के जिन दोहराए गए एलिमेंट के अपने चाइल्ड हैं वे नंबर वाले कॉलम (line.0.sku), सिर्फ़ टेक्स्ट वाले दोहराए गए एलिमेंट सेमीकोलन से जुड़कर एक सेल (a;b), और हेडर पंक्ति में मिला हर कॉलम होता है। मान ठीक वैसे लिखे जाते हैं जैसे XML में हैं। कॉमा, उद्धरण या लाइन ब्रेक वाले फ़ील्ड RFC 4180 के अनुसार उद्धृत होते हैं।

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
पंक्तियाँ
दोहराए गए एलिमेंट की सबसे लंबी लिस्ट
नेस्टिंग
चाइल्ड एलिमेंट → डॉट वाले कॉलम; एट्रिब्यूट → @ कॉलम
कहाँ चलता है
आपके ब्राउज़र में — कोई अपलोड नहीं

इनके लिए नहीं: रिकॉर्ड की कई लिस्ट वाले दस्तावेज़ — सिर्फ़ सबसे लंबी लिस्ट पंक्तियाँ बनती है; किसी दूसरी के लिए पहले JSON में बदलिए, वह लिस्ट कॉपी कीजिए और "JSON को CSV में बदलें" से बदलिए।

पंक्तियाँ कैसे ढूँढ़ी जाती हैं

पंक्तियाँ रूट के नीचे कहीं भी दोहराए गए एलिमेंट की सबसे लंबी लिस्ट होती हैं, उसे चाहे जो लपेटे हो। <records count="2"><record>…</record><record>…</record></records> से हर <record> की एक पंक्ति बनती है, भले आवरण पर एट्रिब्यूट हो। RSS फ़ीड से हर <item> की एक पंक्ति बनती है, title, link और pubDate जैसे कॉलम के साथ, भले चैनल का अपना title और link आइटम के बगल में हों। नतीजे के नीचे की पंक्ति बताती है कि कौन सी लिस्ट ली गई, जैसे rss.channel.item।

उस लिस्ट के बगल के मान, जैसे फ़ीड का अपना title, किसी रिकॉर्ड का हिस्सा नहीं हैं और छोड़ दिए जाते हैं। जब दस्तावेज़ में रिकॉर्ड की कई लिस्ट हों, तो सिर्फ़ सबसे लंबी पंक्तियाँ बनती है। किसी दूसरी लिस्ट के लिए फ़ाइल को /xml-to-json से बदलिए, वह लिस्ट उसके [ से ] तक कॉपी कीजिए, और उसे /json-to-csv में पेस्ट करके बदलिए।

सिर्फ़ एक रिकॉर्ड वाली फ़ाइल

कोई दोहराया एलिमेंट न हो तो वही अकेला रिकॉर्ड एक पंक्ति है, और उसके कॉलम उसके अपने फ़ील्ड के नाम हैं: <records><record><name>Rahul</name><city>Pune</city></record></records> से name और city कॉलम बनते हैं। इसलिए जो फ़ाइल कभी एक और कभी कई रिकॉर्ड रखती है, उसका हेडर वही रहता है — यह तब मायने रखता है जब कोई दूसरा प्रोग्राम कॉलम को नाम से पढ़ता है।

मान कैसे लिखे जाते हैं

मान ठीक वैसे लिखे जाते हैं जैसे XML में हैं: 1.50 वैसा ही 1.50 रहता है, TRUE वैसा ही TRUE, और NULL वाला एलिमेंट टेक्स्ट NULL देता है, जबकि ख़ाली एलिमेंट ख़ाली सेल देता है। 007 अपने शून्य रखता है, और तारीख़ें जैसी लिखी हैं वैसी रहती हैं। जो मान =, +, - या @ से शुरू होता है, उसके आगे एक एपॉस्ट्रॉफ़ी लगती है, जैसे /json-to-csv पर, ताकि स्प्रेडशीट उसे फ़ॉर्मूले की तरह न चलाए।

सिर्फ़ टेक्स्ट वाले दोहराए गए चाइल्ड एलिमेंट एक सेल में सेमीकोलन से जुड़ते हैं, इसलिए दो <tag> एलिमेंट a;b देते हैं। जिन दोहराए गए चाइल्ड एलिमेंट के अपने चाइल्ड हैं, उन्हें line.0.sku और line.1.sku जैसे नंबर वाले कॉलम मिलते हैं। नेमस्पेस प्रीफ़िक्स कॉलम के नाम में रहते हैं, जैसे soap:Body.price। चाइल्ड एलिमेंट के बगल में रखा टेक्स्ट #text कॉलम में जाता है, पर उनके बीच अपनी जगह के बिना। फ़ाइल उस एन्कोडिंग में पढ़ी जाती है जो उसकी पहली लाइन घोषित करती है।

अक्सर पूछे जाने वाले प्रश्न

क्या मेरी फ़ाइल किसी सर्वर पर अपलोड होती है?
नहीं। पूरा काम आपके ब्राउज़र में, आपके अपने डिवाइस की क्षमता से होता है। फ़ाइल आपके कंप्यूटर या फ़ोन से बाहर नहीं जाती, और कोई भी टूल एक बार इस्तेमाल हो जाने के बाद इंटरनेट बंद होने पर भी काम करता रहता है।
इसे कैसे पता चलता है कि कौन से एलिमेंट पंक्तियाँ हैं?
यह रूट के नीचे दोहराए गए एलिमेंट की सबसे लंबी लिस्ट लेता है — इसलिए <records><record>…</record></records> में हर <record> एक पंक्ति बनता है, और RSS फ़ीड में हर <item>। उस लिस्ट के बगल के मान, जैसे फ़ीड का अपना title, छोड़ दिए जाते हैं। कोई दोहराया एलिमेंट न हो तो अकेला रिकॉर्ड एक पंक्ति बनता है, और उसके अपने फ़ील्ड के नाम कॉलम बनते हैं।
एट्रिब्यूट कहाँ जाते हैं?
@ लगे कॉलम में — <record id="3"> से @id नाम का कॉलम बनता है। चाइल्ड एलिमेंट के बगल का टेक्स्ट #text कॉलम में जाता है।
क्या Excel इसे सही खोलेगा?
हाँ। "Excel के लिए BOM जोड़ें" स्विच (डिफ़ॉल्ट चालू) वह चिह्न लिखता है जिससे Excel UTF-8 पहचानता है, इसलिए हिंदी, देवनागरी और चिह्न सही दिखते हैं।

संबंधित उपकरण

स्प्रेडशीट और डेटा में और

यह पेज अन्य भाषाओं में: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা