.NET

2009-08-29 13 views
9

में एक आरएसएस फ़ीड deserializing क्या यह आरएसएस फ़ीड से डेटा पढ़ने के लिए serialization का उपयोग करने के लिए व्यावहारिक/संभव है? मैं मूल रूप से अपने नेटफ्लिक्स कतार (आरएसएस फ़ीड से प्रदान) से जानकारी खींचना चाहता हूं, और मैं यह तय करने की कोशिश कर रहा हूं कि सीरियलाइजेशन संभव/संभव है, या अगर मुझे XMLReader की तरह कुछ उपयोग करना चाहिए। साथ ही, यूआरएल से फ़ीड डाउनलोड करने का सबसे अच्छा तरीका क्या होगा? मैंने कभी भी ड्राइव से कुछ भी नहीं खींचा है, इसलिए मुझे यकीन नहीं है कि ऐसा करने के लिए कैसे जाना है।.NET

उत्तर

18

आप XML को LINQ, LINQ उपयोग कर सकते हैं यदि कोई RSS फ़ीड दस्तावेज़ की मूल बातें पर प्राप्त करने के लिए एक आसान तरीका है।

यह मेरा ब्लॉग के आरएसएस फ़ीड के द्वारा बेनामी प्रकार के एक संग्रह से बाहर का चयन करने, उदाहरण के लिए something I wrote से है:

protected void Page_Load(object sender, EventArgs e) 
{ 
    XDocument feedXML = XDocument.Load("http://feeds.encosia.com/Encosia"); 

    var feeds = from feed in feedXML.Descendants("item") 
       select new 
       { 
       Title = feed.Element("title").Value, 
       Link = feed.Element("link").Value, 
       Description = feed.Element("description").Value 
       }; 

    PostList.DataSource = feeds; 
    PostList.DataBind(); 
} 

आप अपने Netflix फ़ीड के खिलाफ बहुत कुछ इसी तरह का उपयोग करने में सक्षम होना चाहिए।

3

यदि आप .NET 3.0 या 3.5 का उपयोग कर रहे हैं ... तो मैं दस्तावेज़ को XDocument में पढ़ने के लिए XMLReader का उपयोग करने का सुझाव दूंगा। फिर आप आरएसएस फ़ीड के खिलाफ पूछने योग्य और प्रस्तुत करने के लिए LINQ से XML का उपयोग कर सकते हैं।

एक्सएमएल को डी-सीरियलाइज करने के लिए कुछ बनाना भी व्यवहार्य है और साथ ही साथ प्रदर्शन करेगा (यदि बेहतर नहीं है) लेकिन बनाने के लिए और अधिक समय गहन होगा।

किसी भी तरह से काम करेगा ... जो आप अधिक आरामदायक हैं (या, यदि आप एक्सएमएल क्रमबद्धता सीखने की कोशिश कर रहे हैं, तो इसके लिए जाएं और कुछ नया सीखें)।

15

.NET 3.5 फ्रेमवर्क ने सिंडिकेशन समर्थन जोड़ा। System.ServiceModel.Syndication नाम स्थान फ़ीड, फ़ीड सामग्री और श्रेणियों, फ़ीड स्वरूपण (आरएसएस 2.0, एटम 1.0) का प्रबंधन करने के प्रकार का एक समूह, आदि

http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.aspx

आप के लिए कुछ विकल्प हैं प्रदान करता है क्रमबद्धता, लेकिन सबसे सरल शायद सबसे अच्छा यहाँ वर्णित है:

http://msdn.microsoft.com/en-us/library/bb536530.aspx

+0

मैं इस में एक देखो ले लिया है, लेकिन ऐसा लगता है नाम स्थान केवल, क्रमबद्धता विकल्प, नहीं अक्रमांकन विकल्प प्रदान करता है, जब तक कि मैं कुछ अनदेखी की। – MGSoto

+0

आप सिंडिकेशन Feed.Load स्थैतिक विधि के माध्यम से "deserialize"। यह स्वचालित रूप से इनपुट प्रारूप का पता लगाता है। यदि आपको अधिक नियंत्रण की आवश्यकता है, तो आप सीधे प्रारूपकों का उपयोग कर सकते हैं ... उनमें से सभी को एक ReadFrom विधि है जो XmlReader लेता है। – jrista

+0

जब मैं घर जाता हूं, तो मैं इसे देखता हूं, यह जानना बहुत अच्छा है कि मुझे कभी भी एक और आरएसएस परियोजना करने की ज़रूरत है या नहीं। – MGSoto

2

एक सुंदर पूर्ण डाउनलोड दिनचर्या के लिए this link देखें।

आरएसएस मूल रूप से एक्सएमएल का व्युत्पन्न है। मुझे आरएसएस प्रारूप को परिभाषित करने के लिए this link पसंद है। This one में वास्तव में एक मूल नमूना है।

2
  • आरएसएस स्कीमा http://www.thearchitect.co.uk/schemas/rss-2_0.xsd
  • से xsd.exe का उपयोग कर सी # वर्ग उत्पन्न प्राप्त करें। XSD rssschema.xsd/सी
  • रनटाइम के दौरान, XSD और श्रेणी से ऊपर उत्पन्न का उपयोग कर आरएसएस एक्सएमएल deserialize।
4
using System.ServiceModel.Syndication; 

public static SyndicationFeed GetFeed(string uri) 
    { 
     if (!string.IsNullOrEmpty(uri)) 
     { 
      var ff = new Rss20FeedFormatter(); // for Atom you can use Atom10FeedFormatter() 
      var xr = XmlReader.Create(uri); 
      ff.ReadFrom(xr); 
      return ff.Feed;    
     } 
     return null; 
    } 
संबंधित मुद्दे