आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप INI को XML में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
INI से XML
यह mapping इतनी सीधी है कि पहले से बताई जा सकती है। एक section header एक element बनता है, उसके नीचे हर key उसकी child element बनती है, और value वह element text बनती है।
यह अनुमान लगाने लायक़ी ही इस जोड़ी को किसी टूल के हक़दार बनाती है, बजाय script के। INI फ़ाइल किसी कन्वर्टर को समझने के लिए लगभग कुछ नहीं देती — एक level की grouping, एक key, एक value प्रति लाइन।
XML को ठीक एक बाहरी element चाहिए और INI फ़ाइल के पास इसकी कोई अवधारणा नहीं। Converter इसे इस तरह हल करता है — अगर फ़ाइल में सिर्फ़ एक section था और कुछ नहीं, वह section root बन जाता है।
कुछ और भी हो तो एक generic root element में लपेटा जाता है। यह उस पल जानना ज़रूरी है जब आप नतीजे के ख़िलाफ़ कोई XSD या XPath लिखें — दूसरा section जोड़ने से root चुपचाप settings से root में बदल जाता है।
INI में बिल्कुल कोई type system नहीं है — equals sign के दाईं तरफ़ जो कुछ है वह अक्षर हैं। Reader फिर भी अंदाज़ा लगाता है, true और false को boolean बनाता है और जो संख्या जैसा parse होता है उसे संख्या बनाता है।
कुछ के लिए यह ग़लत भी होता है। 007 लिखी value 7 पढ़ी जाती है और 7 के रूप में वापस लिखी जाती है। 0x1F लिखा hexadecimal mask 31 बनकर निकलता है। जो कुछ किसी इकाई के साथ है वह बरक़रार रहता है — 128M वैसा ही रहता है।
XML नामों को लेकर INI से कहीं ज़्यादा सख़्त है। किसी INI key में space, slash या brackets हो सकते हैं; element नाम में अक्षर, अंक, underscore, hyphen और full stop के अलावा लगभग कुछ नहीं हो सकता।
Writer इसलिए हर वह character underscore से बदल देता है जो इस्तेमाल नहीं कर सकता, और किसी अंक से शुरू होने वाले नाम के आगे underscore जोड़ता है। यह बदलाव उलटा नहीं है, इसलिए दो अलग keys एक ही element नाम में मिल सकती हैं।
किसी [database.pool] जैसे section header को nest होना चाहिए ऐसा दिखता है, और TOML में यह होता। यहाँ नहीं होता — reader brackets के बीच सब कुछ एक ही section नाम मानता है।
अगर लक्ष्य schema को असली nesting चाहिए, वह structure रूपांतरण से नहीं बनना चाहिए — इसे बाद में XSLT से या हाथ से फिर से बनाना होगा।
INI का कोई मानक नहीं, सिर्फ़ परंपराएँ हैं, और यह reader दोहराए section को merge नहीं करता — यह हर बार एक नई ख़ाली section बनाता है, इसलिए दो बार आई [logging] सिर्फ़ दूसरी घटना की keys रखती है, बिना कोई त्रुटि दिए।
यह विफलता ख़ामोश है और नतीजा पूरी तरह valid XML दस्तावेज़ है जिसमें बस कुछ settings छूट गई हों। बदलने से पहले स्रोत में duplicate headers ढूँढ लीजिए।
दोनों फ़ॉर्मेट comments सँभालते हैं। INI इन्हें semicolon या hash से चिह्नित करता है, XML angle-bracket block से, और यह रूपांतरण इनमें से किसी को पार नहीं करता।
किसी configuration फ़ाइल पर यह सुनने से ज़्यादा मायने रखता है। किसी timeout के ऊपर की लाइन जो बताती है वह 90 सेकंड पर क्यों सेट है, अक्सर उस फ़ैसले का एकमात्र रिकॉर्ड होता है।
इसे बदलने की वजह लगभग कभी syntax नहीं होती। XML 1.0 1998 से W3C recommendation है, और इसके इर्द-गिर्द वह machinery है जो INI के पास कभी नहीं थी — XSD schemas, XPath, XSLT, XML digital signatures।
इनमें से कुछ भी रूपांतरण के साथ नहीं आता। आउटपुट एक well-formed दस्तावेज़ है, बिना attached schema के — schema लिखना असली काम है।
अगर फ़ाइल पढ़ने वाला application वही है जिसने इसे लिखा, और किसी downstream को schema नहीं चाहिए, बदलना बिना किसी फ़ायदे की क़ीमत है। INI फ़ाइल किसी को भी edit करने देती है जो Notepad खोल सकता है।
यह रूपांतरण तब भी ग़लत टूल है जब असल में सिर्फ़ दो-तीन values चाहिए, पूरी फ़ाइल नहीं। उन्हें सीधे पढ़ लीजिए। यह converter उस मामले के लिए है जहाँ INI फ़ाइल ही config है और config कहीं और जा रहा है।
| INI | XML | |
|---|---|---|
| पूरा नाम | INI कॉन्फ़िगरेशन | Extensible Markup Language |
| फ़ाइल एक्सटेंशन | .ini, .cfg, .conf | .xml |
| मीडिया टाइप | text/plain | application/xml |
| पहली बार प्रकाशित | 1985 | 1998 |
| प्रकाशक | — | W3C |
| विनिर्देश | — | XML 1.0 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | पुराना, फिर भी हर जगह पढ़ा जाता है | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | हर ब्राउज़र |
| इसकी जगह विचारणीय | TOML, YAML | JSON, YAML |
टिप्पणियाँ साथ जाती हैं। INI और XML — दोनों में टिप्पणी की वाक्य-रचना है, इसलिए बाद में फ़ाइल सँभालने वाले के लिए छोड़े गए नोट चुपचाप ग़ायब नहीं होते।
XML को हर मौजूदा ब्राउज़र खोल लेता है। INI को इतने भी नहीं। अगर फ़ाइल किसी वेब पेज या किसी फ़ॉर्म तक जा रही है, तो आम तौर पर इस कन्वर्ज़न की पूरी वजह यही है।
INI 1985 का है और अब मुश्किल से ही इस्तेमाल होता है। XML वह है जो आज के प्रोग्राम लिखते हैं, इसलिए यह कन्वर्ज़न पढ़े जाते रहने का भी सवाल है।
Visual Studio Code INI और XML — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।
दोनों का निशाना अलग काम है: INI का एडिटिंग पर, XML का प्रोग्रामों के बीच डेटा ले जाना पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
XML W3C का है और 1998 से चला आ रहा है, और XML 1.0 में तय किया गया है। Visual Studio Code और oXygen XML Editor इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।
नहीं। XML वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।
कन्वर्ज़न के लिए नहीं: वह उसी ब्राउज़र में होता है जो आपने पहले से खोल रखा है। नतीजा खोलने के लिए उसके बाद वही प्रोग्राम चाहिए जिससे आपका डिवाइस Extensible Markup Language आम तौर पर दिखाता है।