इस पेज का कोड चालू नहीं हुआ।

index.html को सीधे किसी फ़ोल्डर से खोलने पर ब्राउज़र JavaScript मॉड्यूल रोक देता है, इसलिए कोई फ़ाइल चुनने पर कुछ नहीं होगा। इसके बजाय फ़ोल्डर को http पर सर्व कीजिए:

powershell -ExecutionPolicy Bypass -File serve.ps1

फिर http://localhost:8080/ खोलिए।

XML फ़ॉर्मैटर — सजाइए, दबाकर सपाट कीजिए, या JSON बनाइए

पढ़ने के लिए सजाया गया XML या भेजने के लिए दबाकर सपाट किया गया XML, और दोनों तरफ़ JSON में बदला हुआ। इनमें से कुछ भी किसी और के सर्वर में पेस्ट नहीं होता।

भाषा: हिन्दी
कोड देखें
यह टूल XML और JSON फ़ाइलें कभी अपलोड नहीं करता। यहाँ कोई सर्वर है ही नहीं।

फ़ॉर्मैट करना और बदलना एक स्ट्रिंग पर की गई गणित है, और वह यहीं, इसी पेज पर होती है। पार्सर हाथ से लिखा हुआ है और src/shared/parse-xml.js में है, इसके अलावा कुछ नहीं। इस टूल में किसी भी तरह की नेटवर्क सुविधा है ही नहीं — न कुछ लाने को, न कुछ भेजने को — और यहाँ इसका वज़न “XML” शब्द से लगने वाले वज़न से ज़्यादा है: इस फ़ॉर्मैट में जो आता है वह आम तौर पर एक इनवॉइस, एक बैंक स्टेटमेंट, एक मेडिकल रिकॉर्ड, या हेडर में किसी के क्रेडेंशियल लिए हुए SOAP रिक्वेस्ट होती है।

लाइव जाँच: जाँच जारी…

ऑफ़लाइन: जाँच जारी…

हमारी बात मानने की ज़रूरत नहीं: DevTools खोलिए, नेटवर्क टैब देखिए और कुछ फ़ॉर्मैट कीजिए। किसी एक भी रिक्वेस्ट में आपके पेस्ट किए हुए का एक अक्षर नहीं जाता। या इंटरनेट काट दीजिए और फिर भी फ़ॉर्मैट कर लीजिए।

1 काम चुनिए

लेआउट दबाकर सपाट करना वही दस्तावेज़ है, बस हर वह स्पेस हटाकर जो सिर्फ़ पढ़ने के लिए था।

सबसे बाहरी एलिमेंट का नाम XML के सिरे पर एक एलिमेंट होता है और JSON में नहीं होता, इसलिए एक गढ़ना ही पड़ता है।

2 इसे भीतर चिपकाइए

खाली

3 नतीजा ले जाइए

अभी कुछ नहीं।

 

Markdown के रूप में देखें

XML को अपलोड किए बिना कैसे फ़ॉर्मैट करें

  1. काम चुनिए। दो टैब, एक बॉक्स: फ़ॉर्मैट XML को सजाता है या दबाकर सपाट करता है; बदलें उसे JSON बनाता है, या JSON को वापस XML। अभी-अभी जो XML आपने सजाया है वही वह XML है जिसे आप बदलते हैं, दो बार पेस्ट किए बिना।
  2. पेस्ट कीजिए, या फ़ाइल छोड़िए। जो कुछ आप चुनकर कॉपी कर सकते हैं वह सब चलता है, और सिलेक्टर पर छोड़ी गई .xml, .svg, .rss या .xsd फ़ाइल को आपका अपना ब्राउज़र पढ़कर बॉक्स में डाल देता है — छोड़ने के लिए अपलोड वाला कोई कदम है ही नहीं।
  3. इंडेंट चुनिए, या दबाकर सपाट कीजिए। दो स्पेस, चार, या एक टैब। दबाकर सपाट करना वही दस्तावेज़ है, बस हर वह स्पेस हटाकर जो सिर्फ़ पढ़ने के लिए था, और नतीजा बताता है कि इससे कितने बाइट बचे।
  4. गड़बड़ी वहीं पढ़िए जहाँ गड़बड़ी है। यहाँ नाकाम होने वाला पार्सर “लाइन 1 पर गड़बड़ी” कहने के बजाय, जो एक ब्राउज़र एक ही बार में पढ़े गए दस्तावेज़ के बारे में कहता है, यह बताता है कि कौन-सा टैग कभी बंद नहीं हुआ और वह किस लाइन और किस कॉलम पर है।
  5. नतीजा ले जाइए। कॉपी कीजिए, या फ़ाइल के रूप में डाउनलोड कीजिए, जिसका नाम उसी फ़ॉर्मैट पर होगा जिसमें वह निकला।

सवाल

क्या मेरा XML कहीं अपलोड होता है?

नहीं। इस पेज का पार्सर और प्रिंटर ऐसे फ़ंक्शन हैं जो आपके अपने ब्राउज़र में, आपके अपने हार्डवेयर पर चलते हैं। इस टूल में किसी भी तरह की नेटवर्क सुविधा नहीं है — यह कभी कुछ मँगाता नहीं और कभी कुछ भेजता नहीं — और पेज की Content-Security-Policy में वे सारे पते लिखे हैं जिनसे यह संपर्क कर सकता है, जिनमें से एक भी हमारा नहीं है। XML के मामले में यह इस फ़ॉर्मैट की शोहरत से कहीं ज़्यादा मायने रखता है: इसमें जो आता है वह आम तौर पर एक इनवॉइस, एक बैंक स्टेटमेंट, एक मेडिकल रिकॉर्ड, या हेडर में क्रेडेंशियल लिए हुए SOAP रिक्वेस्ट होती है।

क्या यह बाहरी एंटिटी हल करता है?

नहीं, और बंद करने को कुछ है भी नहीं। बाहरी एंटिटी हल करना ही वह तरीका है जिससे किसी XML पार्सर को उसी मशीन की फ़ाइलें पढ़ाने के लिए बहलाया जाता है जिस पर वह चल रहा है — वह हमला जिसे आम तौर पर XXE लिखा जाता है — और src/shared/parse-xml.js हाथ से लिखा हुआ रीडर है जिसमें एंटिटी हल करना है ही नहीं। आपका टेक्स्ट ब्राउज़र के अपने DOMParser को भी कभी नहीं दिया जाता। कोई DOCTYPE बिना कभी चले आगे बढ़ जाता है।

XML को JSON में बदलने पर क्या खोता है?

मिले-जुले कंटेंट का क्रम, टिप्पणियाँ, और एट्रिब्यूट तथा चाइल्ड एलिमेंट का फ़र्क — आखिरी वाला मिटता नहीं, बस नरम पड़ जाता है, क्योंकि एट्रिब्यूट ऐसा मेंबर बन जाता है जिसका नाम @ से शुरू होता है। किसी एलिमेंट का अपना टेक्स्ट, जब उसे किसी और के साथ रहना पड़े, #text बन जाता है, और दोहराए गए चाइल्ड एक ऐरे बन जाते हैं। हर वैल्यू स्ट्रिंग ही रहती है: XML में टाइप होते ही नहीं, और यह तय करना कि 8080 एक संख्या थी, जानकारी गढ़ना होगा।

JSON को XML में बदलने पर क्या खोता है?

खाली ऑब्जेक्ट, खाली ऐरे और खाली स्ट्रिंग का फ़र्क, जो तीनों एक खाली एलिमेंट बन जाते हैं, और हर वैल्यू का टाइप, क्योंकि XML में टाइप होते ही नहीं। ऐरे दोहराया गया एलिमेंट बन जाता है, जो वापस पढ़े जाने वाली इकलौती शक्ल है, और जिस key को कोई एलिमेंट नाम सँभाल नहीं सकता उसके असुविधाजनक अक्षर बदल दिए जाते हैं, बजाय ऐसा दस्तावेज़ निकालने के जिसे कोई पार्सर पढ़ेगा ही नहीं।

क्या यह SVG, RSS फ़ीड या POM फ़ाइल फ़ॉर्मैट कर सकता है?

हाँ। तीनों XML हैं, और यह XML पढ़ता है, उसकी कोई खास बोली नहीं। इस तरह सजाया गया SVG हाथ से बदलना आसान होता है; RSS या Atom फ़ीड आम तौर पर दबाकर सपाट किया हुआ ही भेजा जाता है और तब तक पढ़ा नहीं जा सकता जब तक कोई उसे खोल न दे। कैसे सजाया गया है, इससे दस्तावेज़ का मतलब ज़रा भी नहीं बदलता।

क्या दोबारा इंडेंट करने से XML का मतलब बदल जाता है?

जिस दस्तावेज़ के एलिमेंट दूसरे एलिमेंट रखते हैं, उसमें नहीं। जहाँ फ़र्क पड़ सकता है वह है टेक्स्ट: शब्द रखने वाले एलिमेंट के भीतर की खाली जगह उसी टेक्स्ट का हिस्सा होती है, इसलिए जिस एलिमेंट में सिर्फ़ टेक्स्ट है उसे खोलने के बजाय एक ही लाइन पर छोड़ दिया जाता है। CDATA हिस्से बिलकुल वैसे ही कॉपी होते हैं जैसे थे।

ब्राउज़र का अपना XML पार्सर ही क्यों न इस्तेमाल करें?

क्योंकि दस्तावेज़ टूटा हो तो वह क्या कहता है। DOMParser एक एरर दस्तावेज़ लौटाता है जिसके शब्द हर ब्राउज़र में अलग होते हैं और अक्सर बात “लाइन 1 पर गड़बड़ी” पर आकर रुक जाती है। हाथ से लिखा रीडर बता सकता है कि कौन-सा टैग कभी बंद नहीं हुआ, और वह कहाँ खुला था, और असल में आपको यही जानना था। बाहरी एंटिटी हल न करना दूसरी वजह है।

फ़ाइल कितनी बड़ी हो सकती है?

यहाँ कोई सीमा रखी ही नहीं गई, क्योंकि उसके लिए पैसे देने वाला कोई सर्वर नहीं है। असली छत आपकी अपनी डिवाइस है: कुछ मेगाबाइट XML ठीक रहता है, और बहुत लंबे दस्तावेज़ में पेज आपसे कीबोर्ड छीनने के बजाय आपके टाइप करने में ठहराव का इंतज़ार करता है और फिर दोबारा फ़ॉर्मैट करता है।

क्या यह मुफ़्त है, और क्या खाता चाहिए?

यह मुफ़्त है, और कोई खाता नहीं, कोई साइन-इन नहीं, कोई ट्रायल नहीं और आप कितना पेस्ट करें इसकी कोई सीमा नहीं। साइट पर विज्ञापन हैं, उन्हीं से इसका खर्च चलता है; विज्ञापनों को आपके टेक्स्ट के बारे में कुछ नहीं दिया जाता।

क्या यह ऑफ़लाइन चलता है?

हाँ। पेज एक बार लोड कीजिए, फिर इंटरनेट काट दीजिए और यह चलता रहता है। यही सबसे आसान तरीका भी है यह साबित करने का कि कुछ अपलोड नहीं हो रहा: जो टूल आपका XML फ़ॉर्मैट करने के लिए बाहर भेजता, वह तार निकालते ही रुक जाता।