2010-10-20 10 views
13

मुझे लगता है कि XML::RSS::Parser को 2005 से अद्यतन नहीं किया गया है। क्या यह अभी भी आरएसएस या एटम को पार्स करने के लिए अनुशंसित लाइब्रेरी है? क्या कोई बेहतर या बेहतर तरीका है?पर्ल में आरएसएस/एटम पार्स करने के लिए सबसे अच्छी लाइब्रेरी क्या है?

उत्तर

14

मुझे यकीन नहीं है कि यह कभी भी "अनुशंसित लाइब्रेरी" रहा है। अगर मुझे पता है कि मुझे किस तरह की फ़ीड को पार्स करने की ज़रूरत है, तो मैं XML::RSS या XML::Atom का उपयोग उपयुक्त के रूप में करता हूं, लेकिन अगर (जैसा कि अधिक संभावना है) मुझे पता है कि यह एक वेब फ़ीड है, मैं XML::Feed का उपयोग करता हूं।

एक्सएमएल :: अनुरोध किया के रूप में फ़ीड उपयोग का एक उदाहरण जोड़ा जा रहा है ..

use XML::Feed; 

my $feed = XML::Feed->parse(\$string_containing_feed); 

foreach ($feed->entries) { 
    print $_->title, "\n"; 
    print $_->content->body, "\n"; 
} 

यह वह जगह है सब काफी मॉड्यूल प्रलेखन से नकल।

+1

क्या आप XML :: फ़ीड के साथ ब्लॉग एंट्री के शीर्षक और सामग्री को मुद्रित करने के लिए स्निपेट दिखाएंगे? – xenoterracide

+0

मेरे उत्तर में एक उदाहरण जोड़ा गया। –

5

यदि एक्सएमएल :: आरएसएस :: पार्सर आपके लिए काम करता है तो इसका इस्तेमाल करें। मैंने आरएसएस से निपटने के लिए एक्सएमएल :: पार्सर का उपयोग किया है, लेकिन मेरे पास संकीर्ण आवश्यकताएं थीं और एक्सएमएल :: पार्सर पहले ही स्थापित हो चुका था।

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

5

मैं वास्तव में इन दिनों डोमेन-विशिष्ट XML पार्सर्स से बचना चाहता हूं और बस सबकुछ के लिए XPath का उपयोग करना चाहता हूं। इस तरह मुझे केवल एक एपीआई याद रखना है। (जब तक यह एक बड़ी एक्सएमएल है, तो मैं एक घटना आधारित पार्सर XML::Parser की तरह उपयोग करेंगे।)

तो XML::XPath का उपयोग कर, मैं इस तरह एक आरएसएस फ़ाइल से सामान का एक गुच्छा हड़पने कर सकते हैं:

my $rss = get_rss(); 
my $xp = XML::XPath->new(xml => $rss); 

my $stories = $xp->find('/rss/channel/item'); 

foreach my $story($stories->get_nodelist) { 
    my $url = $xp->find('link', $story)->string_value; 
    my $title = $xp->find('title', $story)->string_value; 
    ... 
} 

दुनिया में सबसे सुंदर कोड नहीं है, लेकिन यह काम करता है।

4

XML::FeedPP नामक एक बहुत अच्छा मॉड्यूल भी है (http://search.cpan.org/dist/XML-FeedPP/lib/XML/FeedPP.pm देखें)। FeedPP इतना तेज़ नहीं है लेकिन यह लगभग शुद्ध पर्ल में लिखा गया है और इसमें न्यूनतम निर्भरताएं हैं।

+1

मुझे इसके साथ बहुत अच्छी किस्मत भी मिली है। – Marcus

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

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