آپ کے آلے پر چلتا ہے · آپ کی فائل آپ کے آلے سے باہر نہیں جاتی۔
دہرائے گئے ریکارڈز والی XML فائل ڈالیں — <records><record>…</record>…</records>، RSS فیڈ، ڈیٹابیس کا ایکسپورٹ — اور ہر ریکارڈ کی ایک قطار والی CSV لیں۔ دستاویز براؤزر کا XML پارسر پڑھتا ہے، پھر دہرائے گئے عناصر کی سب سے لمبی فہرست خود ڈھونڈی جاتی ہے، اسے جو بھی لپیٹے ہو — لفافے پر کوئی ایٹریبیوٹ، یا آئٹمز کے ساتھ فیڈ کا اپنا عنوان اور لنک — اور نتیجے کی سطر بتاتی ہے کہ کون سی فہرست استعمال ہوئی۔
ہر ریکارڈ اسی طرح پھیلایا جاتا ہے جیسے JSON سے CSV کے ٹول میں: اندر کے عناصر نقطے سے جڑے کالم بنتے ہیں (address.city)، ایٹریبیوٹ @ والے کالم (@id)، اپنے ذیلی عناصر رکھنے والے دہرائے گئے اندرونی عناصر نمبر والے کالم (line.0.sku)، صرف متن والے دہرائے گئے عناصر سیمی کولن سے جڑے (a;b)، اور سرخی کی قطار ہر ملنے والے کالم کا مجموعہ ہے۔ قدریں بالکل ویسی لکھی جاتی ہیں جیسی XML میں ہیں۔ کوما، واوین یا لائن بریک والے فیلڈ RFC 4180 کے مطابق واوین میں آتے ہیں۔
CSV UTF-8 میں ہے، Excel کے لیے اختیاری BOM کے ساتھ، جداکار آپ چنتے ہیں، اور ڈاؤن لوڈ سے پہلے پہلی 200 سطروں کا پیش نظارہ دیکھ سکتے ہیں۔ کچھ اپ لوڈ نہیں ہوتا۔
ان کے لیے نہیں: ریکارڈز کی کئی فہرستوں والی دستاویزیں — صرف سب سے لمبی قطاریں بنتی ہے؛ کوئی اور چاہیے تو JSON میں بدلیں، وہ فہرست کاپی کریں اور JSON سے CSV کے ٹول سے تبدیل کریں۔
قطاریں روٹ کے نیچے کہیں بھی دہرائے گئے عناصر کی سب سے لمبی فہرست ہیں، اسے جو بھی لپیٹے ہو۔ <records count="2"><record>…</record><record>…</record></records> سے ہر <record> کی ایک قطار بنتی ہے، حالانکہ لفافے پر ایک ایٹریبیوٹ ہے۔ RSS فیڈ سے ہر <item> کی ایک قطار بنتی ہے، title، link اور pubDate جیسے کالموں کے ساتھ، حالانکہ چینل کا اپنا title اور link آئٹمز کے ساتھ ہی رکھے ہوتے ہیں۔ نتیجے کے نیچے کی سطر استعمال ہونے والی فہرست کا نام بتاتی ہے، مثلاً rss.channel.item۔
اس فہرست کے ساتھ رکھی قدریں، جیسے فیڈ کا اپنا عنوان، کسی ریکارڈ کا حصہ نہیں، اس لیے چھوڑ دی جاتی ہیں۔ جب کسی دستاویز میں ریکارڈز کی کئی فہرستیں ہوں تو صرف سب سے لمبی قطاریں بنتی ہے۔ کوئی اور فہرست چاہیے تو فائل کو /xml-to-json سے تبدیل کریں، اس فہرست کو اس کے [ سے ] تک کاپی کریں، /json-to-csv میں پیسٹ کریں اور تبدیل کریں۔
کوئی دہرایا گیا عنصر نہ ہو تو وہی اکیلا ریکارڈ ایک قطار ہے، اور اس کے کالم اس کے اپنے فیلڈ کے نام ہیں: <records><record><name>Ali</name><city>Lahore</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 کالم میں جاتا ہے، ان کے درمیان اپنی جگہ کے بغیر۔ فائل اس انکوڈنگ میں پڑھی جاتی ہے جس کا اعلان اس کی پہلی سطر کرے۔
یہ صفحہ دوسری زبانوں میں: English · العربية · Deutsch · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · Bahasa Indonesia · বাংলা