अगर XML इतनी खराब है ... तो इतने सारे लोग इसका इस्तेमाल क्यों करते हैं? [बन्द है]


37

मैं XML के उद्देश्य को समझता हूं, लेकिन मैं हमेशा लोगों की शिकायत सुनता हूं कि यह कितना बुरा है? मैं वास्तव में इसके बारे में इतना बुरा क्या समझ में नहीं आता? मैं आमतौर पर "फूला हुआ" और "धीमा" शब्द सुनता हूं।

लेकिन मुझे प्रोग्रामर के रूप में लगता है, आप मुख्य रूप से इसके लिए क्या उपयोग करते हैं? और क्या आप वास्तव में इसे "बुरा" मानते हैं .... क्योंकि यदि यह है, तो बहुत सारे लोग इसे डेटा के परिवहन के लिए उपयोग करते हैं ...


1
आपका जवाब सवाल में है। लोग अभी भी इसका उपयोग करते हैं क्योंकि लोग इसका उपयोग करते थे, और विकल्प (1) JSON और YAML से पहले इस्तेमाल किए गए सभी कोड को फिर से लिखते हैं, या (2) इसे चूसते हैं और बेवकूफ काम करते हैं। बहुत सारे लोग अभी भी हिंसा के चक्र को समाप्त करते हैं। यह अभ्यास के निहित मूल्य को साबित नहीं करता है।
पार्थियन शॉट

5
एक वास्तविक दस्तावेज़ (मैन पेज, नुथ, हैमलेट, आदि) के लिए JSON आज़माएं। तब आप समझ जाएंगे कि XML क्यों आवश्यक है। यह एक ऐसा स्थान है जहाँ JSON बेकार है (आगे बढ़ो, कोशिश करो)। या तो एक दूसरे के डिज़ाइन स्पेस में उपयोग करना संदिग्ध है। JSON के स्पेस में XML का उपयोग करने से होने वाली समस्याएं मुख्य रूप से वर्बोसिटी और गति हैं, जबकि XML के स्पेस में JSON का उपयोग करने से होने वाली समस्याएं पोर्टेबिलिटी को शामिल करती हैं (एक मित्र के साथ इंटरप्ट करने की कोशिश करें जो JSON में एक पुस्तक किया था, लेकिन उनका अपना तरीका है), अखंडता, और व्याख्या की समस्याओं को ठीक करने के लिए बहुत सारे मानव प्रयास की आवश्यकता होती है। अपनी नौकरी के लिए सही उपकरण का उपयोग करें।
टेक्‍स्‍टकेक

एक्सएमएल केवल खराब है क्योंकि बहुत से लोग इसे उन चीजों के लिए दुरुपयोग करते हैं जिनके लिए डिज़ाइन नहीं किया गया था। यदि आपको अपने डेटा को आसानी से एक्स्टेंसिबल होने की आवश्यकता नहीं है (अर्थात यह योजना कई पार्टियों द्वारा उपयोग की जाती है, जिन्हें एक आधिकारिक पार्टी द्वारा केंद्र द्वारा तय की गई है, और यदि आपका डेटा एक दस्तावेज़ नहीं है, तो (यानी यदि DOM) 'आपके डेटा की खराब अमूर्तता है), तो XML उन अनुप्रयोगों के लिए अनुकूल नहीं है। जब आपका समस्या डोमेन XML के लिए डिज़ाइन किया गया होता है, तब भी कुछ और XML से मेल नहीं खाता है। JSON, YAML, आदि XML के लिए डिज़ाइन किए गए स्थान के लिए खराब रूप से अनुकूल हैं।
रयान

जवाबों:


90

Xml यह क्या होने के लिए डिज़ाइन किया गया था के लिए महान है - निम्न स्तर पर डेटा सत्यापन को लागू करने के लिए कुछ क्षमताओं के साथ एक मंच तटस्थ, मानव पठनीय डेटा ट्रांसफर प्रोटोकॉल। मुझे संदेह है कि जो कोई भी इस तरीके से एक्सएमएल का उपयोग करता है, उसे वास्तविक शिकायत है। क्या यह सबसे रसीला तार प्रारूप है? नहीं, लेकिन इससे भी बदतर विकल्प हैं। क्या यह आपके कस्टम बाइनरी प्रारूप को पढ़ने में उतना ही तेज़ है? नहीं, लेकिन आपके व्यवसाय के साथी इसे पढ़ सकते हैं कि वे किस स्टैक का उपयोग कर रहे हैं।

हालांकि, समस्या यह है कि मनुष्य - विशेष रूप से उद्यम आर्किटेक्ट के रूप में जानी जाने वाली नस्ल - बुरे हैं और अच्छी चीजें लेते हैं और उन्हें बुरा बनाते हैं। Xml के मामले में, इस सदी के शुरुआती भाग ने Xml को हर IT समस्या के लिए सार्वभौमिक हथौड़ा के रूप में देखा। कमेटी द्वारा थोड़े डिजाइन में छिड़कें और आप SOAP और oXML जैसी कुछ भयानक राक्षसीताओं के साथ अंत करते हैं । न तो दुश्मनों पर कामना की जानी चाहिए, न दोस्तों या सहकर्मियों पर।


15
+1 - जो कोई भी कभी भी EDI से निपटना चाहता है, बस इच्छा है कि XML का आविष्कार किया गया था इससे पहले कि गड़बड़ के बारे में आया था।
स्कॉट व्हिटलॉक

12
+1 मेरे विचारों से बिल्कुल मेल खाता है। मैं केवल सादा और सरल डेटा संग्रहीत करने के लिए जोड़ूंगा, भले ही यह एक पदानुक्रमित (लेकिन बहुत गहरा नहीं है, जो किसी भी चीज़ के साथ अच्छी तरह से मिश्रण नहीं करता है ), कुछ निश्चित प्रारूप हैं जो बस काम करते हैं - सबसे विशेष रूप से JSON और YAML। उत्तरार्द्ध मानव पठनीयता के संबंध में इमो भययोग्य है।

11
Parphrase jwz के लिए: "एक निश्चित प्रकार का प्रोग्रामर है जो किसी भी समस्या को देखेगा और कहेगा, 'मुझे पता है, मैं XML का उपयोग करूँगा।" अब उसे दो समस्याएं हैं। ''
एडम क्रॉसलैंड

13
कृपया मुझे बताएं कि ओएक्सएमएल का इरादा एक मजाक के रूप में किया गया था, जैसे कि ब्रेनफक या व्हॉट्सएप या LOLCODE।
dsimcha

9
@ शमीम हाफिज, SOAP निश्चित रूप से मानव जाति द्वारा अब तक के सबसे बुरे मठों में से एक है।
लॉजिक

24

XML सिर्फ एक उपकरण है जो कई स्वादों और उपयोगों में आता है। एक्सएमएल कुछ चीजों पर उत्कृष्टता प्राप्त करता है और दूसरों को बेकार करता है। मुझे लगता है कि समस्याओं में से एक यह है कि लोगों ने "एंटरप्राइज" एक्सएमएल देखा है जो नामस्थान और बकवास के साथ अनावश्यक रूप से जटिल है (एसओएपी, किसी को भी?)। मनुष्यों के लिए XML प्रारूपों को डिजाइन करने की चाल डेटा में वास्तविक अर्थ जोड़ रही है जबकि उन्हें पढ़ने के लिए भारी नहीं बनाया गया है।

जिन चीजों को लोग मुद्दा बनाते हैं, उनमें से एक यह है कि एक्सएमएल कभी-कभी किसी पात्र या कुछ गायब ब्रैकेट पर चुटकी लेता है। हालाँकि, एक उल्टा और एक नकारात्मक पक्ष भी है। उल्टा यह है कि आपके पास HTML जैसी अस्पष्टता नहीं है जहां अर्ध-अमान्य वाक्यविन्यास के विभिन्न मामलों की व्याख्या अलग तरीके से की जा सकती है।

नकारात्मक पक्ष यह है कि यह लेखक के लिए थोड़ा कठिन है और सीखना कठिन है। मैं मानता हूं कि ऐसा तर्क दिया जाना चाहिए कि यदि HTML XML जैसा कठोर होता, तो वेब इतना बड़ा नहीं बन पाता, लेकिन मैं यह भी तर्क दूंगा कि अगर आज ऐसा होता तो हमें खुशी होगी। :)

इसके अलावा, हर चीज के लिए इसका इस्तेमाल न करें क्योंकि आपके पास इसे लागू करने के लिए समझ और निर्णय है। यदि आपके पास सभी XML हैं, तो आप हमेशा एक XSLT परिवर्तन करना चाहते हैं जो आप चाहते हैं। :)

मेरा तर्क है कि प्रारूप केवल वास्तव में मायने रखता है जब मनुष्यों को इसके साथ सहभागिता करने की आवश्यकता होती है। यदि आप कुछ ऐसा प्रोग्राम लिख रहे हैं जो किसी चीज़ को क्रमबद्ध करता है और उसे कहीं और भेजता है जहाँ इसे आपके किसी अन्य प्रोग्राम द्वारा उपभोग किया जाना है, तो कौन परवाह करता है कि यह जितना संभव हो उतना लंबे समय तक दिखता है? सभी देखभाल के लिए एक द्विआधारी प्रारूप या बन्नी और यूनिकॉर्न का उपयोग करें।

XML के पेशेवरों

  • बहुत सारे किनारे मामले शामिल हैं जो कि YAML और JSON नहीं करते हैं
  • विभिन्न प्लेटफार्मों और भाषाओं की एक सरणी में XML को पार्स करने और मान्य करने के लिए उत्कृष्ट उपकरण हैं
  • XML आसानी से और शक्तिशाली रूप से दूसरे प्रारूप में परिवर्तित हो सकता है (XSLT जैसी चीजों के माध्यम से)
  • उचित XML दस्तावेज़ मनुष्यों को पढ़ने और संपादित करने के लिए सरल हैं; मुझे मत बताओ JSON आसान है, यह नहीं है :)
  • एक्सएमएल कुछ हद तक स्वयं-वर्णन है, अर्थात इसमें सीधे इसकी संरचना और अर्थ (अधिकांश द्विआधारी प्रारूपों के विपरीत) के बारे में जानकारी शामिल है
  • एन्कोडिंग संभालती है
  • व्हॉट्सएप अज्ञेयवाद, जो आसान क्रॉस-प्लेटफ़ॉर्म उपयोग के लिए बनाता है
  • यदि यह अच्छी तरह से गठित नहीं है तो (डेटा का संरचनात्मक रूप से सही होना सुनिश्चित करता है)
  • यह एसजीएमएल नहीं है

विपक्ष

  • वाचाल
  • यह बाइनरी के रूप में पार्स करने के लिए उतना तेज़ नहीं है
  • यदि यह अच्छी तरह से गठित नहीं है तो टूटता है (आपके एप्लिकेशन को क्रैश करता है)

अच्छा उपयोग करता है

  • विन्यास फाइल
  • डेटा इंटरचेंज प्रारूप
  • संस्करण लचीला फ़ाइल स्वरूपों
  • डेटाबेस में दस्तावेज़ संग्रहीत करना

इतना अच्छा उपयोग नहीं

  • डेटा ट्रांसफर प्रारूप
  • वस्तुओं को क्रमबद्ध करना
  • डेटाबेस में रिलेशनल डेटा संग्रहीत करना
  • उच्च प्रदर्शन I / O परिदृश्यों के लिए फ़ाइल स्वरूप

13
मुझे संदेह है कि "कॉन्फ़िगरेशन फाइलें" "अच्छे उपयोग" के तहत होनी चाहिए। वे डेटा नहीं हैं, बल्कि निर्देश हैं।
daknøk

3
मैं यहाँ @ daknøk के साथ हूँ - मैं उस समय की गणना नहीं कर सकता हूँ जिसे मुझे बड़ी मात्रा में समय बिताना पड़ा है, जो कॉन्फ़िगरेशन की बग को दूर करने के लिए लंबी एक्सएमएल-फ़ाइल की एक लंबी कतार में लगा है जो निर्भरता इंजेक्शन को निर्दिष्ट करता है, जो कि एक छोटे टाइपो पर आधारित था। एक XML- विशेषता।
गजलर

3
यदि खराब डेटा किसी ऐप को क्रैश करता है तो क्या यह डेटा है जिसमें कोई समस्या है?
जेम्स स्नेल

4
कोई भी फ़ाइल प्रारूप जो विकृत / भ्रष्ट है, टूटे हुए सॉफ़्टवेयर को क्रैश करने की क्षमता रखता है। तो XML यहाँ अपराधी नहीं है ... बस आपका आवेदन। नहीं तो अच्छी पोस्ट।
थॉमस ईडिंग

3
आप पर विस्तार कर सकते हैं "बहुत सारे किनारे मामले हैं जो कि YAML और JSON नहीं हैं।"
ट्रेवर हिक्की

14

जेफ एटवुड का XML में एक बहुत अच्छा ब्लॉग पोस्ट है : एंगल ब्रैकेट टैक्स अगर आप इसके बारे में बात करना चाहते हैं तो इसके बारे में एक स्रोत चाहते हैं।

मेरे पास इसके लिए सबसे आम उपयोग हैं:

  • आपस में बात करते हुए सेवाएं। उदाहरण के लिए, सामग्री प्रबंधन प्रणाली का उपयोग करने वाली वेबसाइट को ग्राहक संबंध प्रबंधन प्रणाली में कुछ डेटा भेजने होते हैं और यह XML के साथ किया जाता है।

  • कॉन्फ़िगरेशन संग्रहण। Web.config और app.config सामान्य उदाहरण हैं, लेकिन nAnt स्क्रिप्ट कुछ XML का उपयोग उनके लिए भी कर सकते हैं।

मुझे नहीं लगता कि यह इष्टतम है, लेकिन यह अकेले मेरे दिमाग को खराब नहीं करता है।


11

दो कारण:

  1. वहाँ बहुत सारे बुरे प्रोग्रामर हैं। एक्सएमएल खराब हो सकता है, लेकिन यह भी सरल है (कम से कम सतह पर) और खराब सॉफ़्टवेयर लिखना बहुत आसान है। वीबी की तरह सोरटा।
  2. इन निर्णयों को करने वाले बहुत से लोग प्रोग्रामर नहीं हैं, लेकिन व्यावसायिक प्रकार जिन्होंने केवल सुना है कि "हर कोई एक्सएमएल का उपयोग कर रहा है" और इसलिए वे तय करते हैं कि वे चाहते हैं कि उनका उत्पाद एक्सएमएल का भी उपयोग करें।

क्या एक बेतुका और पूरी तरह से बेकार अंक। 1) XML खराब से बहुत दूर है और इसका सॉफ्टवेयर की गुणवत्ता से कोई लेना-देना नहीं है, लोग लिखते हैं कि वे इसे चुनते हैं या नहीं, मैंने काफी अच्छे VB प्रोग्रामर देखे हैं, जिसका अर्थ है कि यदि आप VB का उपयोग करते हैं तो आप वास्तव में बुरा सॉफ्टवेयर लिखते हैं। सिर्फ मूर्खतापूर्ण क्योंकि आप सॉफ्टवेयर कैसे लिखते हैं और आप इसे लिखने के लिए क्या उपयोग करते हैं, के बीच एक पूर्ण डिस्कनेक्ट है। 2) फिर भी एक और गलत धारणा है, XML चुनना बढ़िया है और ज्यादातर लोग जो इसे बेहतर या बदतर के लिए चुन रहे हैं वे निश्चित रूप से प्रोग्रामर हैं। XML चांदी की गोली नहीं है, लेकिन यह कुछ चीजों के लिए अच्छा है।
ईयाल सोलनिक

2
@ ईयालसोलनिक: कुछ लोग, जब एक समस्या पेश करते हैं, तो सोचते हैं कि "मुझे पता है, मैं XML का उपयोग करूंगा।"<Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription> </ProblemWorsening>
मेसन व्हीलर

3
सिर्फ इसलिए कि लोग किसी चीज का दुरुपयोग करते हैं इसका मतलब यह नहीं है कि तकनीक ही खराब है, आप एक ही सिंड्रोम को कई स्थानों पर देख सकते हैं।
ईयाल सोलनिक

8

मैं आमतौर पर "फूला हुआ" और "धीमा" शब्द सुनता हूं।

यह सबसे कॉम्पैक्ट सिंटैक्स नहीं है, लेकिन यह स्पष्ट रूप से सबसे अधिक अभिव्यंजक है। मानव पठनीय? इस बात पर निर्भर करता है कि आप अपनी भाषा को कैसे डिज़ाइन करते हैं। अधिकांश लोग XML के लिए एक भाषा डिज़ाइन नहीं करते हैं, वे बस XML के रूप में वस्तुओं को क्रमबद्ध करते हैं।

... इतने सारे लोग इसका उपयोग क्यों करते हैं?

यह सर्वव्यापी है। आप XQuery के साथ XML डेटाबेस को क्वेरी कर सकते हैं, XSLT के साथ परिणामों को एक्सएचटीएमएल या एटम के रूप में बदल सकते हैं, अन्य वेब सेवाओं से एटम या अन्य XML प्रारूप प्राप्त कर सकते हैं, एक्सफ़ॉर्म का उपयोग करने वाले उपयोगकर्ताओं से एक्सएमएल प्राप्त करें, इसे XMLSchema, आराम एनजी या स्कैमेट्रॉन के साथ सत्यापित करें, इसके साथ प्रक्रिया करें XProc, इसे XQuery अपडेट के साथ डेटाबेस में वापस सहेजें। ये सभी उपकरण XML को समझते हैं, इसलिए विभिन्न अभ्यावेदन के बीच मैपिंग की कोई आवश्यकता नहीं है।

XML एक क्रमांकन तकनीक नहीं है, यह एक सामान्य प्रयोजन सूचना सेट है।


... और हम साल के लिए खुद से पूछते हैं कि क्रिस के लिए SOAP XML पर क्यों बनाया गया है।
जेन्सजी

6

यहां, हम इसका उपयोग विभिन्न विक्रेताओं द्वारा विभिन्न आंतरिक अभ्यावेदन के साथ विभिन्न प्रणालियों के बीच डेटा विनिमय के लिए करते हैं। हम डेटा को आगे-पीछे करने के लिए एक XML ट्रांसफॉर्मेशन / इंटरचेंज सिस्टम का निर्माण करते हैं। यह उसके लिए ठीक काम करता है।

एक्सएमएल स्वाभाविक रूप से खराब नहीं है, लेकिन मैं स्वीकार करता हूं कि एक्सएमएल का उपयोग करके "अच्छा" समाधान डिजाइन करना तुच्छ नहीं है।


5

"एक्सएमएल का सार यह है: समस्या यह हल करती है कठिन नहीं है, और यह समस्या को अच्छी तरह से हल नहीं करता है।" - फिल वाडलर, पीओपीएल 2003

मेरी निजी राय यह है कि जब तक आप सत्यापन, स्कीमा, XSLTs और बाकी बदसूरत सामान की परवाह नहीं करते हैं और आप फ़ाइलों का आकार छोटा रखते हैं (अन्यथा पार्सिंग धीमी हो जाती है) आपको XML के कुछ अच्छे उपयोग मिल सकते हैं (एक उदाहरण आईएनआई फाइलों का उपयोग करने के बजाय अपने एप्लिकेशन को कॉन्फ़िगर करने के लिए है)।


4

मेरे अनुभव में, लोग ज्यादातर इसका इस्तेमाल करने के तरीके के बारे में शिकायत करते हैं, न कि तकनीक के बारे में।

जिन फूला हुआ और धीमा बिट्स लोगों के बारे में शिकायत करता है, वे आमतौर पर पुस्तकालय / तरीके होते हैं जिनका उपयोग जानकारी प्राप्त करने के लिए किया जाता है।

मैं इसका उपयोग छोटी मात्रा में संरचित जानकारी को संग्रहीत करने के लिए करता हूं, जिसे मैं डिस्क पर संग्रहीत करना चाहता हूं (डेटाबेस या बाइनरी क्रमांकन के बिना), या किसी अन्य एप्लिकेशन को पास करता हूं (जो अनिवार्य रूप से सोप का भी वर्णन करता है)।


2

इसका अच्छा कारण है:

इसका एक मानक "इंटरफ़ेस" जो कई विषम प्रणालियों के साथ संवाद करने के लिए उपयोग कर सकता है। और "मानव" पठनीय है (जिस तरह, 5 एमबी एक्सएमएल को घूरने की कोशिश करें)

इसका बुरा क्योंकि:

इसका फूला हुआ, बड़ा आकार = अधिक बैंडविड्थ = अधिक $ $

अन्य कारण हैं, हर कोई एक अलग पकड़ है ...


4
@ डर्कनाइट: मैं आप पर Xml Entities फेंककर मानव पठनीय को चुनौती देता हूं ... (व्यक्तिगत पेशाब)
Matthieu M.

1
मुझे नहीं लगता कि एक्सएमएल स्वाभाविक रूप से फूला हुआ है - लेकिन इसके कार्यान्वयन हैं। मुझे एक्सएमएल-आरपीसी विशेष रूप से अनावश्यक ब्लोट में अहंकारी लगता है।
२०:

3
@ हॉर्सकॉल: <advanceAcceptanceIndicator>Y</advanceAcceptanceIndicator>अनुपात डेटा / मार्कअप इतना कम है ... मैं इसे "फूला हुआ" कहता हूं। उदाहरण के लिए, जेसन केवल आधा फूला हुआ होगा advanceAcceptanceIndicator: "Y":। यह भी तथ्य है कि टैग के बीच का पाठ मान्य है, इसलिए Xml को पढ़ते समय, आपको यह तय करने की आवश्यकता है कि इस cruft के साथ क्या करना है \n\t\t\t, और समाधान आम तौर पर इसे अनदेखा करने के लिए है, क्योंकि आप वास्तव में इसके साथ शुरू करने के लिए कभी भी इच्छुक नहीं थे।
Matthieu M.

1
@ हॉर्सकॉल: यह होगा, लेकिन मैंने कभी नहीं कहा कि यह एक बूलियन मूल्य था, यह सिर्फ एक चार वर्ण होने के लिए होता है :) यहाँ विशेषता का उपयोग value? टैग।
मैथ्यू एम।

1
"इसका फूला हुआ, बड़ा आकार = अधिक बैंडविड्थ = अधिक $ $" मुझे लगता है कि संपीड़न का आविष्कार नहीं किया गया है जहां आप अभी तक हैं।
एंडी

2

किसी भी अन्य तकनीक की तरह: कई उपलब्ध उपकरण और पुस्तकालय हैं।

मुझे XML पसंद नहीं है, खासकर क्योंकि यह फंकी है, जब लोग कहते हैं कि यह मानव पठनीय है, तो वे मजाक करते हैं, मुझे लगता है, या वास्तव में एक एक्सएमएल नहीं पढ़ा है जब किसी ने एक्सएमएल को एक विशेषता में एम्बेड करने की कोशिश की ... एक्सएमएल इकाइयां इसे वास्तव में बनाती हैं अपठनीय। इसके अलावा, यह आश्चर्यजनक है कि कितना स्थान व्यर्थ हो जाता है क्योंकि निरर्थक अंत-टैग, और मुफ्त पाठ और डेटा मिश्रण करने की क्षमता ...

परंतु:

  • Xml निर्दिष्ट किया जा सकता है (xsd) और उपकरण उपलब्ध हैं जो Xml डेटा के अनुरूपता की जांच करते हैं
  • बहुत सारे टूल (टेक्स्ट एडिटर और लाइक) Xml का समर्थन करते हैं
  • बहुत सारे पुस्तकालय (हर प्रोग्रामिंग भाषा के बारे में) Xml का समर्थन करते हैं

यह भी है कि पूर्ववर्ती समय का लाभ, अधिकांश समय। जब आप पहले से ही Xml में वेब सेवाएं प्रदान कर रहे हैं, और एक नई सेवा के लिए पूछता है ... यह शायद Xml में किया जाएगा क्योंकि यही आप जानते हैं।


5
XML बाइनरी या पोजिशन- या कॉमा-सीमांकित डेटा की तुलना में अधिक पठनीय है।
FrustratedWithFormsDesigner

केवल एक भोले उपयोगकर्ता के लिए। अगर मुझे नेत्रहीन को एक दो सौ रिकॉर्ड्स स्कैन करने हैं जो एक ऐसे डेटा की तलाश कर रहे हैं जो कुछ डेटा को गायब कर रहा है तो मैं तत्वों के एक समूह के माध्यम से वेड की तुलना में फिक्स्ड-लेंथ रिकॉर्ड के एक ब्लॉक में कुछ खाली कॉलमों की तलाश करूंगा और खाली टैग की तलाश कर रहा हूं।
TMN

1
@FrustratedWithFormsDesigner: यह वास्तव में हाथ में डेटा पर निर्भर करता है। Xml जानकारी की प्रकृति को सूचना के समीप एम्बेड करता है। यदि आप कार्यात्मक प्रोग्रामिंग भाषाओं को देखते हैं, तो आपको (हास्केल) जैसी चीजें दिखाई देंगी: data Person = Person { surname :: String, firstName :: String, age :: Int }यदि मैं देखता हूं तो Person "Doe" "John" 42यह पढ़ने योग्य भी है, और बहुत सारे क्रॉफ्ट से बचें, फिर भी यह अल्पविराम के करीब है।
मैथ्यू एम।

1
ठीक है, आपका उदाहरण मार्कअप के बिना पढ़ना आसान था, लेकिन तुच्छ (मैं 8 या 9 डेटा तत्वों से कम कहूंगा) उदाहरण सभी रूपों (शायद बाइनरी को छोड़कर) का समर्थन करने के लिए बनाया जा सकता है। मेनफ़्रेम से डेटाफ़ीड स्थिति-सीमांकित स्ट्रिंग्स के रूप में उत्पन्न होती है (और इसका अधिकांश केवल संख्यात्मक कोड है), और वे XML में परिवर्तित होने के बाद पढ़ना और डिबग करना और प्रबंधित करना बहुत आसान हैं। जैसा आपने कहा, यह निर्भर कर सकता है ...
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner: हाँ, यह बिल्कुल मेरी बात है :) यह निर्भर करता है, लेकिन क्योंकि XML के लिए इस तरह का एक समृद्ध पारिस्थितिकी तंत्र है, और क्योंकि यह केवल उपकरण / पुस्तकालयों के एक सेट को बनाए रखना आसान है, लोग आमतौर पर हर चीज के लिए XML का उपयोग करते हैं। व्यक्तिगत रूप से, मैं एक्सएमएल पर जेसन का पक्ष लेता हूं, लेकिन एक बार फिर बिना इंडेंटेशन के, यह गड़बड़ है: पी
मैथ्यू एम।

-1

XML फ़ाइलों के लिए एक खराब विकल्प है जिसे मानव द्वारा बनाए रखा जाना चाहिए। मार्कअप और सामग्री के बीच कोई दृश्य पृथक्करण नहीं है, जिससे इसे पढ़ना मुश्किल हो जाता है। विशेष प्रयोजन के संपादक के बिना सही ढंग से लिखना थकाऊ है। XML दस्तावेज़ में कोई भी त्रुटि घातक है; एक XML दस्तावेज़ को आंशिक रूप से संसाधित नहीं किया जा सकता है। जब कोई XML फ़ाइल अमान्य होती है, तो परिणामी त्रुटि संदेश अक्सर अनपेक्षित होता है।

किसी भी फ़ाइल के लिए जिसे मानव द्वारा बनाए रखा जाना चाहिए, मैं किसी भी व्याख्या की गई भाषा (पायथन, रूबी, ग्रूवी, आदि) में JSON, YAML या स्रोत कोड का उपयोग करना पसंद करूंगा। हमने पाया है कि विरासत कोड के लिए एक्सएमएल कॉन्फ़िगरेशन बनाने का एक शानदार तरीका ग्रूवी मार्कअपबर्स्ट का उपयोग करना है। एक और अच्छा विकल्प एक डोमेन-विशिष्ट भाषा बनाना है; रूबी, ग्रूवी और कई अन्य भाषाओं के साथ यह करना काफी आसान है।


8
मुझे लगता है कि आप XML की बात को अनदेखा कर रहे हैं, मार्कअप है सामग्री। XML का उद्देश्य आपके डेटा के अर्थ का वर्णन करना है। उदाहरण के लिए, यदि आपके पास एक टेलीफोन नंबर है, तो इसे लैंडलाइन नंबर या मोबिलनंबर के रूप में टैग करना संदर्भ को जोड़ता है जो अन्य उपयोग कर सकता है। या उस मामले के लिए पाठ के चारों ओर एक फोन टैग जोड़ना (मोबाइल फोन पर उस नंबर को कॉल करने योग्य बना सकता है)। आपके अन्य बिंदुओं के लिए भी मैं असहमत हूं। Xml दस्तावेज़ संलेखन आमतौर पर बहुत सीधा है। त्रुटि संदेश हमेशा कुशासन से संबंधित होते हैं और मैं किसी भी दिन JSON को सौंपकर xml का संपादन करूँगा
होमडेव

@ आपके फ़ोन का उदाहरण HTML के लिए मान्य होगा।
फ्लोरियन एफ

"XML दस्तावेज़ में कोई भी त्रुटि घातक है; XML दस्तावेज़ को आंशिक रूप से संसाधित नहीं किया जा सकता है।" हाँ, यह XML के बिंदु के लिए एक बड़ा बराबर है।
एंडी

@ और यह बहुत बेकार है अगर XML को मानव द्वारा लिखा गया था और आवेदन केवल "गलत!" कहता है। एक मानव संपादक को उस रेखा को जानना होगा जहां त्रुटि का पता चला था।
केविन क्लाइन

कोई भी टूल आपको यह बताता है कि त्रुटि का पता लगाने के लिए वास्तव में कौन सी रेखा और अक्सर किस वर्ण का उपयोग किया जाता है। उदाहरण के लिए नोटपैड ++ में XML टूल्स। .Net आपको ठीक वही बताएगा जहाँ आपकी .config फ़ाइल गलत है। यदि आप एक एपीआई के बारे में बात कर रहे हैं, तो XML का एक लाभ यह है कि एपीआई डेवलपर एक एक्सएसडी भी प्रदान कर सकता है, जो वैध XML सिंटैक्स सुनिश्चित करने के अलावा आपको यह भी बता सकता है कि क्या आपके पास कोई तत्व हैं जो नहीं हैं, अगर वहाँ होना चाहिए केवल उस तत्व में से एक हो, आदि हस्तलिखित जोंस को पेंच करना बहुत आसान है।
एंडी

-2

एक ही समय में मानव पठनीय होने के नाते पार्सिंग अपेक्षाकृत आसान है।

और कुछ अच्छे पार्सर्स (जैसे Xerces {c ++}) आसानी से उपलब्ध हैं।


2
जब तक दस्तावेज़ छोटे होते हैं, तब तक यह आसान है। यदि आपको स्मृति में यथोचित रूप से फिट होने के लिए दस्तावेजों को पार्स करना है, तो चीजें गंभीर हो जाती हैं।
TMN

मैं मानव पठनीयता पर सवाल उठाऊंगा। यह सिर्फ एक बराबर JSON पढ़ने पर XML को पढ़ने के लिए बहुत अधिक प्रयास करता है।
सेमीस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.