ठीक है, मैंने एक्सएमएल पर कुछ किताबें पढ़ी हैं और इसे थूकने और क्या नहीं करने के लिए कार्यक्रम लिखे हैं। लेकिन सवाल यह है। एक अल्पविराम सीमांकित फ़ाइल और एक एक्सएमएल फ़ाइल दोनों "मानव पठनीय" हैं। लेकिन आम तौर पर, कॉमा सीमांकित फ़ाइल एक एक्सएमएल फ़ाइल की तुलना में मेरी आंखों पर बहुत आसान है; आमतौर पर टैग जितना अधिक डेटा लेते हैं उतना अधिक डेटा लेते हैं। ऐसा लगता है कि मैं जो पढ़ रहा हूं उसे अस्पष्ट करना प्रतीत होता है और प्रारूप एक ही जानकारी रखने के लिए एक पृष्ठ ले सकता है जिसमें आप अल्पविराम सीमांकित फ़ाइल में टेक्स्ट की एक पंक्ति पर शामिल हो सकते हैं। और एक कॉमा सीमांकित फ़ाइल पार्स के लिए काफी कम जटिल है। तो असली सवाल क्यों एक्सएमएल है? सिर्फ इसलिए कि सभी अच्छे बच्चे इसे कर रहे हैं?एक्सएमएल बनाम अल्पविराम पाठ फ़ाइलों को
उत्तर
ये केवल दो विकल्प नहीं हैं, आप JSON या YAML का भी उपयोग कर सकते हैं जो xml से अधिक हल्के वजन वाले हैं।
सामान्यतः, यदि आपके पास कई विशेष वर्णों के साथ सरल सारणीबद्ध डेटा है, तो CSV खराब विकल्प नहीं है। संरचित डेटा के लिए, अन्य 3 में से किसी एक का उपयोग करने पर विचार करें।
+1: बहुत से लोग भूल जाते हैं कि एक्सएमएल के अलावा प्रारूप हैं जो लगभग एक ही चीज करते हैं। मैंने कभी भी वाईएएमएल के साथ काम नहीं किया है लेकिन जेएसओएन एक्सएमएल के लिए एक महान "हल्के वजन" विकल्प है (उल्लेख नहीं करना कि अधिकांश प्रोग्रामिंग भाषाओं में पार्स करना आसान है)। –
ओह, गीज़, यह अच्छा है मैंने कुछ वाईएएमएल और जेएसओएन देखा। और वह वास्तव में मुझे मेरा जवाब देता है। एक्सएमएल की तुलना में निश्चित रूप से बेहतर गैर-स्वामित्व प्रारूप हैं। – NoMoreZealots
कई मामलों के लिए, जेएसओएन एक्सएमएल की तुलना में काम करने के लिए निश्चित रूप से बेहतर है। जहां XML प्राप्त कर्षण यहां मानक मानकीकृत स्कीमा के साथ काम करते हैं, और स्कीमा को एक साथ एकीकृत करते समय (नेमस्पेस एक महान विचार है!)। यदि आपको इनमें से किसी की आवश्यकता नहीं है, और विशेष रूप से यदि आप अपनी जरूरतों के लिए विज्ञापन-प्रसार प्रारूप बना रहे हैं, तो JSON या YAML के साथ जाएं। – jcdyer
यह सब इस बात पर निर्भर करता है कि आपको क्या करना है। यदि आपको एक सरल "फ्लैट" पंक्ति संरचना की तुलना में अपने डेटा संरचनाओं में अधिक जटिलता की आवश्यकता हो सकती है। उदाहरण के लिए पदानुक्रमित डेटा, तो एक्सएमएल एक बढ़िया विकल्प है।
एक्सएमएल चीजों के जटिल, संरचित और पदानुक्रमिक प्रतिनिधित्व का समर्थन करता है। सीएसवी जो मामूली रूप से स्टोर कर सकता है उससे बहुत दूर है।
ऑब्जेक्ट उन्मुख वातावरण में एक जटिल ऑब्जेक्ट ग्राफ़ के बारे में सोचें। इसे एक्सएमएल दस्तावेज़ के रूप में आसानी से क्रमबद्ध किया जा सकता है लेकिन सीएसवी ऐसी चीज को संभाल नहीं सकता है।
ठीक है, मैं हाइरिकल बनाम सीएसवी दे दूंगा। लेकिन अगर मैं एक जटिल ऑब्जेक्ट उन्मुख वातावरण के बारे में सोच रहा हूं, तो डेटा प्रतिनिधित्व के लिए सिंटैक्स की तरह एक सी ++ या जावा बहुत हल्का वजन है। मैंने वास्तव में एक "सी-संरचना" शैली डेटा पार्सर लिखने के बारे में सोचा है क्योंकि वाक्यविन्यास इतना साफ है। – NoMoreZealots
सीएसवी वास्तव में कभी मानक नहीं था। बस एक ही त्वरित और गंदा विधि लोगों का एक समूह स्वतंत्र रूप से आया था। बेशक, इनमें से कुछ लोग दूसरों से ज्यादा चालाक थे और आपको एहसास हुआ कि आपको पात्रों से बचने की जरूरत है, लेकिन दूसरों ने नहीं किया। यहां तक कि एमएसएसक्यूएल निर्यात सीएसवी अनुचित रूप से। एक्सएमएल करने का एक दस्तावेज सही तरीका है ताकि यदि आप इसे सही कर रहे हैं और किसी के आवेदन या जो कुछ भी स्वीकार नहीं कर रहा है, तो आप कहते हैं कि "यह मेरी गलती नहीं है।"
एक्सएमएल अनुबंध (स्कीमा या डीटीडी) के खिलाफ मान्य किया जा सकता है।
एक्सएमएल भी इसके आसपास के मानार्थ प्रौद्योगिकियों है: XmlDom, XPath, XSLT, XSD, XML स्कीमा
लाभ
फायदे एक्सएमएल के एक नंबर सीएसवी से अधिक है:
- श्रेणीबद्ध डेटा संगठन
- स्वत: डेटा सत्यापन (एक्सएमएल स्कीमा या डीटीडी)
- Eas ily प्रारूपों कन्वर्ट (XSL का प्रयोग करके)
- आसान रिलेशनल संरचना
- XML-RPC
- वस्तु हठ (मार्शलिंग) के लिए उपयुक्त के साथ संयोजन में इस्तेमाल किया जा सकता की पहचान करने के
- सरल व्यापार से व्यापार संचार
- सहायक संबंधित तकनीकों (XPath, डोम)
- आधुनिक वेब ब्राउज़र
- निकालें, रूपांतरण, और लोड (ईटीएल) उपकरण
- साथ तंग एकीकरण पिछड़ों प्रारूप संगतता (संस्करण विशेषता)
- डिजिटल हस्ताक्षर
यह पूरी तरह से समस्या डोमेन और क्या आप हल करने की कोशिश कर रहे हैं पर निर्भर करता है फ़ाइल।
उदाहरण
अंतिम आइटम कुछ है कि कई लोगों को याद आती है जब वेब पृष्ठों लेखन है। उस स्थिति पर विचार करें जहां आपके पास गानों का एक बड़ा डेटा स्टोर है। गीतों में कलाकार, एल्बम, प्रति मिनट धड़कता है, और बहुत कुछ। आप XML को डेटा निर्यात कर सकते हैं, XML को एक्सएचटीएमएल के रूप में प्रस्तुत करने के लिए एक सरल स्टाइलशीट लिख सकते हैं, फिर ब्राउज़र को XML पृष्ठ पर इंगित करें। ब्राउज़र एक्सएमएल को एक वेब पेज के रूप में प्रस्तुत करेगा।
आप सीएसवी के साथ ऐसा नहीं कर सकते हैं।
नुकसान
योएल Spolsky a great article क्यों एक्सएमएल एक जटिल डेटा स्टोर के रूप में एक गरीब विकल्प है पर है: यह धीमी है। (एक डेटाबेस के विपरीत, जो एक एकल सीपीयू निर्देश के साथ पिछले या अगले रिकॉर्ड पुनर्प्राप्त कर सकता है, एक्सएमएल दस्तावेज़ में रिकॉर्ड को रिकॉर्ड करना बहुत धीमा है।) तर्कसंगत रूप से, इसे waiting 18 months द्वारा हल किया गया अनुकूलन समस्या माना जा सकता है। इस प्रकार:
- धीमी अन्य प्रारूपों की तुलना में
- वाक्य-अतिरेक पार्स करने के लिए पठनीयता में कोई कमी कर सकते हैं
- दस्तावेज़ ब्लोट भंडारण लागत को प्रभावित कर सकता
- आसानी से ओवरलैपिंग (गैर श्रेणीबद्ध) डाटा संरचनाओं मॉडल नहीं कर सकते
- खराब डिज़ाइन किए गए एक्सएमएल फ़ाइल प्रारूप असामान्य नहीं हैं (मेरे अनुभव में; उद्धरण वांछित)
संबंधित प्रश्न
यह भी देखें: Why Should I Use A Human Readable File Format।
+1 बिल्कुल, एक्सएमएल के आसपास उपकरण और विनिर्देशों का एक संपूर्ण पारिस्थितिक तंत्र है। एक और: एक्सएमएल डिजिटल हस्ताक्षर आपको डेटा प्रमाणित करने का एक मानक तरीका प्रदान करता है। http://www.w3.org/Signature/ –
वेल एक्सएमएल मानव पठनीय और मानव संपादन योग्य है। आप एक एक्सएमएल फ़ाइल देख सकते हैं और जानते हैं कि यह वास्तव में क्या है। एक सीएसवी फ़ाइल मानव पठनीय है लेकिन आप वास्तव में नहीं जानते कि प्रत्येक मूल्य का क्या अर्थ है।
उदाहरण के लिए, यदि हम उपयोगकर्ता खाते संग्रहीत कर रहे हैं, तो आप क्या पसंद करेंगे?
<user>
<username>ryeguy</username>
<password>abc123</password>
<regdate>3-4-08</regdate>
<email>[email protected]</email>
</user>
या
ryeguy,abc123,3-4-08,[email protected]
बेशक
, यह सिर्फ एक उदाहरण है, लेकिन 30 क्षेत्रों या तो साथ यह कल्पना!
या इससे भी बदतर, अगर हम उप-क्षेत्र बनाते हैं तो क्या होगा?
<user>
<username>ryeguy</username>
<password>abc123</password>
<regdate>3-4-08</regdate>
<email>[email protected]</email>
<posts>
<post>
<id>34</id>
....
</post>
</posts>
</user>
यह सीएसवी में डालने के लिए गधे में दर्द होगा। जल्द ही आप अपनी खुद की पूछताछ भाषा बनायेंगे।
मुझे नहीं पता, फ़ाइल प्रारूप वास्तव में वास्तविक डेटा से अधिक स्थान लेता है। डेटा यानी सामान जो आपको वास्तव में जानना है! यदि मैं हाथ से बजाए प्रोग्राम से कर रहा हूं, तो "
शायद आप पहली पंक्ति के रूप में "उपयोगकर्ता नाम, पासवर्ड, regdate, ईमेल" जैसे हेडर पंक्ति चाहते हैं, तो, यदि आप वास्तव में अपने फ़ील्ड याद नहीं कर सकते हैं। – erjiang
तथ्य यह है कि एक्सएमएल मानव पठनीय है कि इसका मतलब यह नहीं है इसे पढ़ने के (या संपादित) होने सीधे मनुष्यों द्वारा के विचार के साथ बनाया गया है।
एक्सएमएल में गुणों का एक अच्छा सेट है जो इसे कई मामलों के लिए एक अच्छा विकल्प बनाता है, विशेष रूप से जब आपके पास अतिरिक्त बोझ से निपटने के लिए मानव संसाधन होते हैं जो इस तरह के गुण अनिवार्य रूप से लाते हैं: सत्यापन, अच्छी तरह से परिभाषित मानक, बहुत औजारों का, एक बहुत ही लचीला वास्तुकला, यह एक पेड़ मॉडल के लिए अच्छी तरह से नक्शा बनाता है, जो कि कई कार्यक्रमों का उपयोग करते हैं। इसकी मानव पठनीयता एक अतिरिक्त मूल्य है जो डिबगिंग को सरल बनाता है (बाइनरी फ़ाइल के डीबगिंग करने का प्रयास करें ...), छोटे मामलों के लिए निरीक्षण और छोटे बदलाव। दूसरी ओर
सीएसवी, आसान, त्वरित और रैखिक है, हालांकि कई बोलियों मौजूद हैं, और यह अच्छी तरह पार्स करने दूर तुच्छ से है (और कहा कि समस्या के साथ कि यह तुच्छ लग रहा है!)। डेटा की तालिका से जुड़े अधिकांश अनुप्रयोगों के लिए, सीएसवी सही विकल्प है।
सामान्य में, तथापि, वहाँ डेटा प्रतिनिधित्व के मामलों आप XML के साथ हल कर सकते हैं कर रहे हैं, लेकिन आप सीएसवी (उदाहरण के लिए, एक पेड़) के साथ हल नहीं कर सकते हैं। दूसरी तरफ, सीएसवी में प्रतिनिधित्व किए जा सकने वाले किसी भी डेटा को एक्सएमएल में भी प्रदर्शित किया जा सकता है, हालांकि इसकी गारंटी नहीं है (और वास्तव में यह भी सत्यापित है) कि यह अधिक कुशल होगा (अंतरिक्ष के मामले में, पार्सिंग आदि की आसानी)। यह आपके प्रारूप की "स्वतंत्रता की डिग्री" का विषय है। एक्सएमएल की स्वतंत्रता की डिग्री का उच्च मूल्य है। सीएसवी कम है। एक्सएमएल के पीछे प्रचार इस तथ्य से भी संबंधित है।
हथौड़ा सिंड्रोम का शिकार नहीं है: आप एक हथौड़ा (XML) है जब, सब कुछ एक कील (कुछ आप XML के साथ हल करने के लिए है कि) की तरह दिखता है। वास्तविकता बहुत अलग और नीच है। एक्सएमएल अच्छा है, लेकिन यह किसी भी समस्या का जवाब नहीं है।
मुझे हथौड़ा टिप्पणी पसंद है।
कारणों से आप सीएसवी पर एक्सएमएल पसंद कर सकते हैं (कोर्स पर निर्भर करता है): * लगभग सभी प्लेटफार्मों और भाषाओं में एक्सएमएल पढ़ने, लिखने, विश्लेषण करने और छेड़छाड़ करने के लिए मौजूदा पुस्तकालय हैं। * एक्सएमएल में सभी अक्षरों को एन्कोड करने के लिए अच्छी तरह से परिभाषित नियम हैं। सीएसवी में अस्पष्टताएं हैं जैसे डेटा का हिस्सा अल्पविराम को एन्कोड करना है। * एक्सएमएल विभिन्न प्रकार के डेटा आकारों (जैसे पदानुक्रमित) का समर्थन करता है, जहां डेटा तालिका (पंक्तियों और स्तंभों) जैसा दिखता है जब सीएसवी सबसे उपयोगी होता है।
एक्सएमएल सामग्री का वर्णन करेंगे और यह भी विभिन्न प्रकार की भाषाओं में पुस्तकालयों का समर्थन करने का एक टन है ... लेकिन यह फूला हुआ हो सकता है। यदि सीएसवी का प्राप्त करने वाला अंत लेआउट से अवगत है और यह सारणीबद्ध है, तो मुझे इसके साथ कुछ भी गलत नहीं दिख रहा है।
मैं इस मामले में प्राथमिक भेद के बारे में सोच के रूप में XML आधारित वृक्ष है, जबकि सीएसवी टेबल आधारित है पसंद है।
है, तो आप घोंसला और फिर से घोंसला और छोड़ सकते हैं और आम तौर पर XML में एक जटिल वृक्ष संरचना बनाते हैं, जबकि आप केवल सीएसवी में सरल 2 डी टेबल बना सकते हैं।
- 1. .m फ़ाइलों को उत्कृष्ट पाठ
- 2. पर्ल अवधि बनाम अल्पविराम ऑपरेटर
- 3. SAXParseException एक्सएमएल-20,221 पाठ
- 4. एक्सएमएल बनाम एसक्यूलाइट बनाम एक्सेस
- 5. डेटाबेस बनाम सादे पाठ
- 6. अजाक्स: जेसन बनाम एक्सएमएल
- 7. एक्सएमएल बनाम हार्डकोडेड इंटरफ़ेस?
- 8. डोम बनाम सैक्स - एक्सएमएल
- 9. एक्सएमएल-आरपीसी बनाम REST
- 10. गतिशील बनाम एक्सएमएल लेआउट?
- 11. स्कैला एक्सएमएल प्रदर्शन बनाम जावा एक्सएमएल
- 12. द्विआधारी बनाम पाठ प्रोटोकॉल
- 13. अल्पविराम
- 14. बाइनरी सीरियलाइजेशन बनाम जेएसओएन बनाम एक्सएमएल
- 15. जावा सीरियलाइजेशन बनाम जेएसओएन बनाम एक्सएमएल
- 16. माइक्रोसॉफ्ट। रिपोर्टिंग। * बनाम एक्सएमएल/एक्सएसएलटी
- 17. मॉडलिंग: एक्सएमएल बनाम रिलेशनल डाटाबेस
- 18. लिंक से एक्सएमएल बनाम डीओएम
- 19. Enum क्रमबद्धता Json बनाम एक्सएमएल
- 20. SyntaxHighlighter एक्सएमएल पाठ स्वरूपित नहीं है
- 21. पूर्ण पाठ खोज बनाम LIKE
- 22. MySQL पूर्ण-पाठ खोज बनाम %%
- 23. आंतरिक पाठ दो पाठ फ़ाइलों पर शामिल हों
- 24. विशाल फ़ाइलों के लिए जावा एक्सएमएल पार्सर
- 25. एंड्रॉइड/ग्रहण - अप्रयुक्त फ़ाइलों को ढूंढना (जावा/एक्सएमएल)
- 26. अजगर अल्पविराम बनाम छोड़कर कोशिश ... '' के रूप में
- 27. पायथन: संपीड़ित पाठ फ़ाइलों से लाइनें पढ़ें
- 28. पीडीएफ और शब्द फ़ाइलों से पाठ निकालें
- 29. संपीड़ित पाठ फ़ाइलों में तेज खोज
- 30. Microsoft SQL सर्वर 2005/2008: एक्सएमएल बनाम पाठ/varchar डेटा प्रकार
धारणा है कि इसके लिए उपलब्ध उपकरण हैं, इस विचार पर आधारित है कि इसे शुरू करने के लिए व्यापक रूप से अपनाया गया था। लेकिन एक वाक्यविन्यास परिप्रेक्ष्य से, क्यों? एक ही जानकारी एक बहुत अधिक संक्षिप्त प्रारूप में प्रतिनिधित्व किया जा सकता था। यह जानकारी के 3 पृष्ठों के लिए, काम पर मिलने वाले कुछ चश्मे, बॉयलर प्लेट के 10 पृष्ठ पढ़ने जैसा है। यह मुझे एक अच्छा कारण नहीं देता है कि इसका उपयोग पहली जगह क्यों किया जाता था। – NoMoreZealots