§

XML पेस्ट करें

§

विकल्प

मोड
इंडेंट
XML डेक्लरेशन
स्व-बंद होने वाले void टैग्स
§

फॉर्मेट किया गया आउटपुट

xml

भारत के बैकएंड स्टैक में XML pretty-print आज भी रोज़ काम आता है। GSTN की GSTR-1/GSTR-3B रिटर्न XML schema, MCA21 का XBRL कॉर्पोरेट फाइलिंग पोर्टल, NPCI के UPI और AePS (Aadhaar enabled Payment System) के legacy XML इंटीग्रेशन, IRCTC और भारतीय रेल का NGeT SOAP API, India Stack का Account Aggregator (AA) data-flow XML, DigiLocker और DPI के signed XML credentials — सब strict indentation के बिना debug कठिन हैं। TCS, Infosys और Wipro की SI टीमें banking core के SOAP envelopes को Wireshark से कॉपी करके पढ़ती हैं; CERT-In की advisories में XSLT-based attack vectors की detection भी readable XML चाहती है। यह ब्राउज़र-only फॉर्मेटर sensitive payload कभी upload नहीं करता।

XML फॉर्मेटिंग क्या है?

XML (Extensible Markup Language) संरचित दस्तावेज़ों और डेटा-इंटरचेंज के लिए W3C द्वारा मानकीकृत टेक्स्ट प्रारूप है। फॉर्मेटिंग — जिसे pretty-printing या beautifying भी कहा जाता है — एक well-formed XML स्रोत लेती है और उसे फिर से इंडेंट करती है ताकि हर element, attribute, comment, processing instruction और CDATA section को आसानी से स्कैन किया जा सके। पार्स किया गया डॉक्युमेंट ट्री वैसा का वैसा रहता है; केवल inter-element व्हाइटस्पेस बदलती है।

XML फॉर्मेटिंग कैसे काम करती है?

आपका इनपुट पूरी तरह आपके ब्राउज़र में नेटिव DOMParser और XMLSerializer APIs तथा एक कस्टम recursive इंडेंटर का उपयोग करके संसाधित होता है। प्रमुख चरण ये हैं:

  1. आपका इनपुट टेक्स्टएरिया से शब्दशः पढ़ा जाता है — आपके द्वारा पेस्ट किया गया हर बाइट केवल स्थानीय मेमोरी में रखा जाता है।
  2. ब्राउज़र इसे new DOMParser().parseFromString(text, 'application/xml') से पार्स करता है। यदि इनपुट well-formed नहीं है, तो पार्सर एक <parsererror> नोड एम्बेड करता है जिसका टेक्स्ट इंजन द्वारा दी गई लाइन और कॉलम संकेत वहन करता है — वे एरर स्ट्रिप में शब्दशः दिखाए जाते हैं।
  3. सफल पार्स पर एक कस्टम इंडेंटर DOM ट्री को depth-first चलाते हुए हर element, attribute set, CDATA section, comment और processing instruction को मौजूदा गहराई पर अपनी लाइन पर उत्सर्जित करता है। विकल्प चालू होने पर स्व-बंद void टैग्स का सम्मान किया जाता है।
  4. मिनिफाई मोड पाइपलाइन को पलट देता है: XMLSerializer().serializeToString(doc) एक single-line रूप उत्सर्जित करता है, फिर एक गार्डेड regex CDATA ब्लॉक्स के अंदर के या non-whitespace टेक्स्ट नोड्स के टेक्स्ट को छुए बिना inter-element व्हाइटस्पेस हटा देती है।
  5. आउटपुट केवल-पठनीय टेक्स्टएरिया में लिखा जाता है, एरर स्ट्रिप साफ हो जाती है, और डाउनलोड बटन परिणाम को एक .xml फ़ाइल में पैकेज कर देता है जिसे आप भेज सकते हैं या टिकट से अटैच कर सकते हैं।

इस टूल से XML को pretty-print क्यों करें?

  • गोपनीयता: हर पार्स, फॉर्मेट और मिनिफाई पास आपके ब्राउज़र में होता है। XML हमारे सर्वर तक कभी नहीं पहुँचता — कोई अपलोड नहीं, कोई टेलीमेट्री नहीं, किसी खाते की ज़रूरत नहीं।
  • सटीक त्रुटियाँ: जब इनपुट गलत होता है, पार्सर वही exact लाइन और कॉलम सामने लाता है जो ब्राउज़र इंजन स्वयं रिपोर्ट करता है — synthetic अनुमान नहीं, वही नंबर जो आप DevTools में देखते हैं।
  • वफ़ादार राउंड-ट्रिप: फॉर्मेट करें फिर मिनिफाई करें, आपको अपने मूल डॉक्युमेंट के byte-equivalent वापस मिल जाता है (XML डेक्लरेशन विकल्प को छोड़कर) — फॉर्मेटिंग namespaces को फिर से canonicalise नहीं करती और न ही attributes का क्रम बदलती है।
  • तेज़: शुद्ध DOMParser और लगभग 60 लाइनों का इंडेंटर कई-मेगाबाइट SOAP envelopes और OOXML chunks को तुरंत संभाल लेता है, और कोई external लाइब्रेरी डाउनलोड करने की ज़रूरत नहीं।

XML फॉर्मेटिंग के सामान्य अनुप्रयोग क्या हैं?

XML pretty-printing वेब पब्लिशिंग, एंटरप्राइज़ इंटीग्रेशन और डेटा आर्काइवल में हर जगह दिखाई देती है:

  • RSS / Atom feed जाँच: किसी podcast या news feed body को पेस्ट करके publish करने से पहले channel metadata, item ordering और namespace prefixes की पुष्टि करें।
  • SOAP डिबगिंग: Wireshark या SOAP client log से कॉपी की हुई envelope को फॉर्मेट करें ताकि Header, Body और Fault sections एक ही नज़र में दिखें।
  • Sitemap ऑडिटिंग: किसी प्रतियोगी या अपनी staging site से लाई गई sitemap.xml को फिर से इंडेंट करें, entries गिनें और हर URL के hreflang alternates की पुष्टि करें।

XML फॉर्मेटिंग का उदाहरण कैसा दिखता है?

3-element <feed><entry><title>Hello</title></entry></feed> पेस्ट करने और 2-स्पेस इंडेंट विकल्प के साथ फॉर्मेट दबाने पर एक चार-लाइन का डॉक्युमेंट बनता है जिसमें हर element अपनी लाइन पर गहराई के अनुसार इंडेंट है। उसी इनपुट पर Minify पर स्विच करने से वह वापस मूल बाइट-स्ट्रिंग में सिमट जाता है। किसी भी well-formed डॉक्युमेंट के लिए राउंड-ट्रिप लॉस-फ्री है।

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

हाँ। फॉर्मेट और मिनिफाई पाइपलाइन शुद्ध DOMParser + XMLSerializer और एक छोटे recursive इंडेंटर पर आधारित है, सब कुछ ब्राउज़र टैब के अंदर चलता है। कुछ भी अपलोड नहीं किया जाता, कोई Service Worker आपके इनपुट को proxy नहीं करता, और फॉर्मेट चरण स्वयं ज़ीरो नेटवर्क रिक्वेस्ट करता है। एकमात्र बाहरी ट्रैफ़िक मानक page-load assets (CSS, fonts, analytics) है — आपका XML Ultim8Soft तक कभी नहीं पहुँचता।

क्या फॉर्मेटिंग डॉक्युमेंट को बदल देती है?

कोई semantic बदलाव नहीं। फॉर्मेटिंग केवल elements के बीच की व्हाइटस्पेस को फिर से लिखती है। Element names, attribute values, text content, CDATA payloads, comments और processing instructions byte-for-byte संरक्षित रहते हैं। Namespace declarations और prefixes बिल्कुल वैसे ही रखे जाते हैं जैसे input ने लिखे थे — फॉर्मेटर re-canonicalise नहीं करता और attributes को reorder नहीं करता। आउटपुट उसी DOM tree में पार्स होता है जिसमें input — वैकल्पिक XML declaration toggle को छोड़कर।

CDATA / comments / processing instructions कैसे handle होती हैं?

तीनों मौजूदा इंडेंट गहराई पर अपनी अलग लाइन पर शब्दशः उत्सर्जित होती हैं। CDATA payloads को <![CDATA[…]]> में लपेटा जाता है, अंदर कोई re-indentation नहीं — spec कहता है CDATA content opaque है, इसलिए फॉर्मेटर उसे कभी नहीं छूता। Comments <!-- … --> का उपयोग करते हैं; processing instructions <?target data?> का। तीनों फॉर्मेट → मिनिफाई → फॉर्मेट राउंड-ट्रिप में अपने content के साथ अक्षुण्ण बच जाते हैं।

XML को फॉर्मेट करने और मिनिफाई करने में क्या अंतर है?

फॉर्मेटिंग व्हाइटस्पेस फैलाती है ताकि मनुष्य डॉक्युमेंट ट्री पढ़ सकें; मिनिफाई इसे transport और storage के लिए फिर से छीन लेती है। दोनों parsed DOM पर काम करते हैं, raw byte string पर नहीं, इसलिए well-formed डॉक्युमेंट पर फॉर्मेट → मिनिफाई का राउंड-ट्रिप मूल मिनिफाइड रूप के byte-equivalent देता है। जब आपको XML payload पढ़ना या diff करना हो तो फॉर्मेट दिशा का उपयोग करें, और जब उसे metered API gateway से भेजना हो या किसी और डॉक्युमेंट में embed करना हो तो मिनिफाई दिशा का।

यह XML फॉर्मेटर वही पार्सर इस्तेमाल करता है जो आपका ब्राउज़र AJAX XHR responses और SVG documents के लिए करता है, इसलिए कोई भी well-formed XML — RSS, Atom, SOAP, sitemap, OOXML, SVG — साफ़-सुथरे ढंग से राउंड-ट्रिप करता है। ऊपर कोई भी XML पेस्ट करें, आउटपुट कॉपी करें, या उसे .xml के रूप में डाउनलोड करें।