2009-01-28 11 views
31

मैंने कई पर्ल एक्सएमएल पार्सर्स की कोशिश की है। मुझे साब्बोट्रॉन पार्सर में काफी दिलचस्पी थी, लेकिन विंडोज बॉक्स पर स्थापित करना इतना दर्द है। वर्तमान में मैंने XML::LibXML और XML::LibXSLT का उपयोग करना शुरू कर दिया है, जिनमें से दोनों मुझे जो कुछ भी चाहिए, वह करने लगते हैं।पर्ल के लिए सबसे अच्छा एक्सएमएल पार्सर क्या है?

वे काफी मानक भी प्रतीत होते हैं। क्या इससे बेहतर उपयोग करने के लिए कोई बेहतर एक्सएमएल पार्सर्स हैं?

+2

"सर्वश्रेष्ठ" एक्सएमएल पार्सर वह है जो आपकी आवश्यकताओं को पूरा करता है। आपने एक्सएमएल पार्सिंग के प्रकार का जिक्र नहीं किया है जो आपको चाहिए: रैखिक (एसएएक्स), पेड़ (डीओएम), पुनरावृत्त (पुल पार्सर) इत्यादि, तो सुझाव देने में मुश्किल होगी। –

उत्तर

24

मुझे लगता है कि आप एक बहुत अच्छा उपयोग कर रहे हैं। XML::LibXML, मैट सार्जेंट और क्रिश्चियन ग्लेन का पर्ल इंटरफ़ेस डैनियल वेल्लियर्ड के libxml2 में एक तेज़ एक्सएमएल पार्सर्स में से एक है जिसे मैं जानता हूं।

+0

धन्यवाद, स्पष्टीकरण के बाद कि मैं सही उपकरण – Xetius

+0

हाँ का उपयोग कर रहा हूं। आप निश्चित रूप से अजीब कुछ भी नहीं उपयोग कर रहे हैं .. यह मानक के करीब है। – mmcdole

10

यदि आपको गति, शक्ति या सुविधाओं की आवश्यकता है, तो XML :: LibXML जाने का तरीका है। यदि आप आसानी से उपयोग के बाद हैं, हालांकि, XML::Simple एक व्यवहार्य विकल्प है।

+0

हां। हालांकि सावधान रहें: सिर्फ इसलिए कि इसे सरल कहा जाता है इसका मतलब यह नहीं है कि आपको दस्तावेज़ को पढ़ना नहीं है। – innaM

+0

दरअसल - सरल (जैसा कि यहां उपयोग किया जाता है) एक सापेक्ष शब्द है .... –

+0

दरअसल। एक्सएमएल :: सरल शायद सबसे अधिक सुविधाजनक 'सरल' पार्सिंग टूल में से एक है जिसे मैंने लंबे समय से उपयोग किया है। :) –

5

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

2

आप XML::Liberal पर भी देख सकते हैं जो नीचे LibXML का उपयोग करता है।

12

यह वास्तव में आपकी आवश्यकताओं पर निर्भर करता है, जैसा कि लोगों ने कहा है। एक्सएमएल फाइलों को पार्स करने के लिए जो ~ 100 एमबी आकार में थे (TAIR से जीन एनोटेशन, 1 गुण प्रति क्रोमोसोम), मैंने मिरोड के XML::Twig मॉड्यूल का उपयोग किया, जिससे आप रुचि रखने वाले तत्वों को पार्स करने के लिए कॉलबैक सेट कर सकते हैं, प्रत्येक सब-दस्तावेज़ को एक्सएमएल के रूप में पेश करते हैं: : सरल पेड़। यह एक एसओएक्स पार्सर (एक स्ट्रीम के रूप में फ़ाइल स्कैनिंग) के लाभों को जोड़ता है जिसमें एक डोम पार्सर (दिलचस्प टुकड़ों के साथ अधिक आसानी से काम करना) होता है।

1

मुझे लगता है कि आपको XML::MyXML भी एक प्रयास देना चाहिए। इसका उपयोग करना बहुत आसान है।

4

(वास्तव में यह एक जवाब नहीं है, लेकिन एक टिप्पणी - हालांकि, मैं टिप्पणी नहीं कर सकता ...)

एक्सएमएल :: सरल यहाँ उल्लेख किया गया है।
(मैं जानता हूँ कि यह कुछ साल पहले से कुछ है, लेकिन यह आज गूगल में दिखाई दिया ...)

हालांकि, यह साइट है (http://metacpan.org/pod/XML::Simple) अब कहते हैं:

इस मॉड्यूल

दॅ स्थिति नए मॉड्यूल में इस मॉड्यूल का उपयोग निराश है। अन्य मॉड्यूल उपलब्ध हैं जो अधिक सरल और सुसंगत इंटरफेस प्रदान करते हैं। विशेष रूप से, एक्सएमएल :: लिबक्सएमएल की अत्यधिक अनुशंसा की जाती है।

इस मॉड्यूल के साथ बड़ी समस्याएं विकल्पों की बड़ी संख्या और मनमानी तरीके हैं जिनमें इन विकल्पों पर बातचीत होती है - अक्सर अप्रत्याशित परिणामों के साथ।

बग फिक्स और दस्तावेज़ फिक्स के साथ पैच का स्वागत है, लेकिन नई सुविधाओं को जोड़ने की संभावना नहीं है।

0

मैं एक ऑफर करूंगा कि का उपयोग नहीं किया जाना चाहिए: XML::Parser

यह स्वचालित रूप से HTML इकाइयों को उनके यूटीएफ -8 समकक्षों तक फैलाता है, और इस व्यवहार को अक्षम करने का विकल्प सभी इकाइयों की सबसे अधिक विशेषता पर काम नहीं करता है, &

साथ ही, इसकी XMLDecl-पार्सर व्याख्या और "standalone"="1" रूप <?xml ... ?> ब्लॉक में standalone विशेषता प्रदर्शित करते हैं, जो बिल्कुल गलत है - यह "standalone"="yes" होना चाहिए।

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