2009-10-23 12 views
9

मुझे पता है कि कोई भी भाषा XML को पार्स करने में सक्षम है; मैं वास्तव में उन फायदे या दोषों की तलाश में हूं जो आप अपने अनुभवों में आ सकते हैं। पर्ल यहां मेरा मानक होगा, लेकिन मैं सुझावों के लिए खुला हूं।एक्सएमएल पार्सिंग - नौकरी के लिए सही स्क्रिप्टिंग भाषा/पैकेज?

धन्यवाद!

अद्यतन: मैं एक्सएमएल :: सरल जो एक अच्छा काम किया है के साथ जा रहा समाप्त हो गया है, लेकिन मैं सलाह के एक टुकड़ा है, यदि आप इसे उपयोग करने की योजना - forcearray विकल्प अनुसंधान पहले। मुझे सीखने के बाद बयान के एक समूह को फिर से लिखना पड़ा कि यह आमतौर पर बलरोधी सेट करने के लिए सर्वोत्तम अभ्यास है। This पृष्ठ में सबसे स्पष्ट स्पष्टीकरण था जो मुझे मिल सकता था। वाकई, मुझे आश्चर्य है कि यह डिफ़ॉल्ट व्यवहार नहीं है।

+0

यह अधिकतर इस बात पर निर्भर करता है कि आपको XML को पार्स करने के अलावा क्या करना है, और शायद इस तरह की या ऐसी भाषा के साथ सहज होने पर भी। पाइथन और सी # दोनों को एक्सएमएल पार्स करने के लिए बहुत अच्छा समर्थन है और बहुत लचीला है, सी ++ में भी ऐसा करने के लिए अच्छी पुस्तकालय हैं, हालांकि स्वयं की भाषा अधिक सख्त है और अधिक सावधानीपूर्वक योजना (अनिवार्य रूप से एक बुरी चीज नहीं) मांगेगी। – RedGlyph

+0

आप पहले से ही एक उचित पार्सर के बारे में पूछ रहे हैं, इसलिए इस पृष्ठ पर नियमित अभिव्यक्तियों का उपयोग करने के बारे में चेतावनियों और वार्ता की अवहेलना करें, लेकिन नीचे, यह विभिन्न भाषाओं के लिए पार्सर सुझाव देता है: http://htmlparsing.icenine.ca – genio

+3

मुझे लगता है कि मैं अकेला हूं जो सोचता है कि इस प्रश्न में कोई भी ** सही ** बिना किसी विशिष्ट मानदंड के उत्तर है। –

उत्तर

10

आप पर्ल का उपयोग कर रहे हैं तो मैं XML::Simple की सिफारिश करेंगे:

अधिक से अधिक वेब साइटों उनकी सामग्री के लिए एक्सएमएल का उपयोग आरंभ करते हैं, यह पता है कि कैसे एक्सएमएल पार्स करने के लिए तेजी डेवलपर्स के लिए वेब के लिए महत्वपूर्ण है डेटा और इसे विभिन्न स्वरूपों में परिवर्तित करें। यही वह जगह है जहां पर्ल मॉड्यूल एक्सएमएल :: सरल कहा जाता है। इसमें को एक्सएमएल डेटा पार्सिंग की कठिनाई दूर है, प्रक्रिया को आपके से अधिक आसान बनाने के लिए संभव है।

+4

एक्सएमएल :: सरल स्वीकार्य है * कभी-कभी *, लेकिन जब जटिल, सख्ती से स्वरूपित डेटा की बात आती है, तो यह अक्सर इसके लायक होने की तुलना में अधिक परेशानी होती है। मैं इसके बजाय XML :: Twig या XML :: LibXML आज़माउंगा। – hobbs

+1

या जब एक्सएमएल बड़ा होता है - एक्सएमएल :: सरल सहित किसी भी डोम पार्सर का उपयोग करना, एक बहुत बुरा विचार है। – Aye

10

XML::Twig, बहुत अच्छा है, विशेष रूप से, क्योंकि यह के रूप में बहुत अन्य विकल्पों में से कुछ के रूप में अत्यधिक शब्द नहीं है।

+5

XML :: Twig के लिए एक सेकंड, विशेष रूप से यदि आपको भारी डेटा सेट को संभालना है। – squeeks

+1

एक्सएमएल :: ट्विग मिश्रित मोड में एक्सएमएल प्रोसेसिंग की अनुमति देता है। –

7

शुद्ध XML पार्सिंग के लिए, मैं जावा, सी #, C++, C, आदि का उपयोग नहीं होता वे चीजें overcomplicate में के रूप में आप एक केला चाहते हैं और साथ ही इसके साथ गोरिल्ला प्राप्त करते हैं। ऐसे पर्ल, PHP, Python, ग्रूवी रूप

उच्च स्तर और व्याख्या भाषाओं अधिक उपयुक्त हैं। पर्ल को लगभग हर लिनक्स डिस्ट्रो में शामिल किया गया है, जैसा कि अधिकांश भाग के लिए PHP है।

मैं ग्रूवी हाल ही में विशेष रूप से इस के लिए इस्तेमाल किया और यह बहुत आसान पाया है। हालांकि आपको लगता है कि एक सी पार्सर उदाहरण के लिए ग्रोवी से तीव्रता के आदेश होंगे।

+2

पार्सिंग एक्सएमएल सी # सीधा है, आपने इस तरह के बुरे अनुभव की रिपोर्ट करने के लिए क्या उपयोग किया है? क्या यह मानक पुस्तकालयों की तुलना में कुछ और था? और रिकॉर्ड के लिए, मैं शायद पर्ल और PHP को तुलना में "उच्च भाषा" के रूप में शायद ही नहीं रखूंगा, वे पूरी तरह से ऑब्जेक्ट उन्मुख भाषाओं में सच नहीं हैं। – RedGlyph

+0

मैंने मोनो (.net 2.0 संगत) का उपयोग किया है। और मैंने कहा कि उच्च स्तरीय भाषा, अधिक नहीं, कुछ गूंजने के बारे में यह देखने के लिए करें कि इसका क्या अर्थ है। –

+0

आह, आपकी सजा तुलनात्मक की तरह दिखती है लेकिन आप बस _high_-level भाषा का मतलब है - और नहीं, मैं आमतौर पर शब्द परिभाषाओं की जांच करने के लिए Google या विकिपीडिया का उपयोग नहीं करता हूं, लेकिन मुझे लगता है कि यह अक्सर एक आम गलती है जो दूसरों को अक्सर करते हैं ;-) किसी भी में मामला, System.Xml मोनो में भी है और मुझे इसके बारे में कुछ भी जटिल नहीं मिला। यह सिर्फ एक और महत्वपूर्ण मानदंड पर जोर देता है कि प्रोग्रामिंग भाषा के साथ आसानी से महसूस करना चाहिए। – RedGlyph

1

पायथन के एक्सएमएल के लिए कुछ अच्छा समर्थन है। मानक लाइब्रेरी डीओएम पैकेज से अधिक 'पायथनिक' पुस्तकालयों में जो एक्सएमएल को अधिक उपयोग करने योग्य ऑब्जेक्ट संरचनाओं में सीधे पार्स करते हैं।

वास्तव में वास्तव में 'सही' भाषा नहीं है ... आजकल अधिकांश भाषाओं के लिए अच्छे XML पैकेज हैं।

6

यह सब पुस्तकालयों में होने जा रहा है।

पायथन के एक्सएमएल के लिए महान पुस्तकालय हैं। मेरी वरीयता lxml है। यह libxml/libxslt का उपयोग करता है, इसलिए यह तेज़ है, लेकिन पायथन बाध्यकारी इसे उपयोग करना वास्तव में आसान बनाता है। पर्ल बहुत अच्छी तरह से भयानक ओओ पुस्तकालयों हो सकता है।

3

बिल्कुल एक पटकथा भाषा नहीं है, लेकिन आप Scala पर भी विचार कर सकते हैं। आप here से शुरू कर सकते हैं।

+0

स्केल के लिए +1 ... और पंद्रह और वर्ण – wheaties

4

मैंने देखा कि लोग एक्सएमएल :: सरल अगर आप पर्ल पर निर्णय लेते हैं तो सरल।

जबकि एक्सएमएल :: सरल, वास्तव में उपयोग करने के लिए बहुत आसान है और महान, एक डोम पार्सर है। इस प्रकार, दुख की बात है, बड़ी एक्सएमएल फाइलों को संसाधित करने के लिए पूरी तरह से अनुपयुक्त है क्योंकि आपकी प्रक्रिया मेमोरी से बाहर हो जाएगी (के लिए यह एक आम समस्या है जो किसी भी डोम पार्सर है, जो एक्सएमएल :: सरल या पर्ल तक सीमित नहीं है)।

तो, बड़ी फ़ाइलों के लिए, आपको अपनी पसंद की भाषा में एक SAX पार्सर चुनना होगा (पर्ल में कई एक्सएमएल सैक्स पार्सर्स हैं, या एक्सएमएल :: टवीग जैसे अन्य स्ट्रीम पार्सर का उपयोग करें जो मानक SAX पार्सर से भी बेहतर है। अन्य भाषाओं के लिए बात नहीं कर सकते हैं)।

+0

वास्तव में एक्सएमएल :: ट्विग है (जोरदार रूप से!) सैक्स नहीं। यह एसएक्स का उपयोग करना आसान है, जबकि अभी भी धारा-उन्मुख है। – mirod

0

एक्सएमएल फाइलों से डेटा पढ़ना सी # और LINQ से एक्सएमएल के साथ आसान है!

किसी भी तरह, हालांकि मुझे वास्तव में पाइथन पसंद है, मुझे मानक पुस्तकालयों के साथ एक्सएमएल को पार्स करना मुश्किल लगता है।

3

स्कैला का एक्सएमएल समर्थन बेहतर है, खासकर एक्सएमएल को सीधे स्कैला कार्यक्रमों में टाइप किया जा सकता है।

माइक्रोसॉफ्ट भी अपने LINQ for XML

के साथ कुछ शांत एकीकृत सामान किया था लेकिन Elementtree और सिर्फ इतना है कि अकेले पैकेज मैं वास्तव में की तरह पर्ल के बजाय अजगर का उपयोग करने के लिए एक अच्छा कारण है;)

यहाँ एक उदाहरण है:

import elementtree.ElementTree as ET 

# build a tree structure 
root = ET.Element("html") 

head = ET.SubElement(root, "head") 

title = ET.SubElement(head, "title") 
title.text = "Page Title" 

body = ET.SubElement(root, "body") 
body.set("bgcolor", "#ffffff") 

body.text = "Hello, World!" 

# wrap it in an ElementTree instance, and save as XML 
tree = ET.ElementTree(root) 
tree.write("page.xhtml") 
0

मैं कहूंगा कि यह सब कुछ की तरह निर्भर करता है। वीबीएनईटी 2008 एक्सएमएल अक्षरों का उपयोग करता है, इसमें LINQ to XML के लिए IntelliSense है, और कुछ पावर खिलौने जो XML को XSD में बदलने में मदद करते हैं। तो व्यक्तिगत रूप से, यदि आप .NET पर्यावरण में काम कर रहे हैं तो मुझे लगता है कि यह सबसे अच्छा विकल्प है।

1

यदि आप इसे करने के लिए Ruby का उपयोग करने जा रहे हैं तो आप Nokogiri या Hpricot पर एक नज़र डालना चाहते हैं। दोनों की ताकत और कमजोरियां हैं। भाषा और पैकेज चयन वास्तव में उस डेटा के साथ आता है जो आप इसे पार्स करने के बाद डेटा के साथ करना चाहते हैं।

संबंधित मुद्दे