2009-05-12 12 views
2

Ich versuche, einen RSS-Feed Linq zu analysieren Verwendung wie so XML:LinqtoXML Parsing dargestellten RSS-Inhalte: codierten

 XNamespace slashNamespace = "http://purl.org/rss/1.0/modules/slash/"; 
     XDocument rssFeed = XDocument.Load(@"http://blog.daimokuchart.com/index.php/feed/"); 

     var posts = from item in rssFeed.Descendants("item") 
        select new RSSData { 
         Title = item.Element("title").Value, 
         Published = DateTime.Parse(item.Element("pubDate").Value), 
         Url = item.Element("link").Value, 
         Content = item.Element("content:encoded").Value 
        }; 

jedoch; es ist ein Problem mit dem Inhalt: codierten Artikel ich diesen Fehler bekommen „Die‚:‘. Charakter, hexadezimalen Wert 0x3A, kann nicht in einem Namen enthalten sein“

Wie zum Teufel ich diesen Artikel Element analysieren ?

Antwort

8
XNamespace nsContent = "http://purl.org/rss/1.0/modules/content/"; 

// ... 

Content = item.Element(nsContent + "encoded").Value 

// ... 
1

Es gibt eine viel einfachere Art und Weise ist es, einen RSS-Feed zu analysieren: die SyndicationFeed Klasse

Mehr Details here

+0

Grundsätzlich das gleiche, außer mit einer anderen Klasse – dswatik

+0

Ja, außer dass Sie sich nicht um das eigentliche XML-Schema kümmern müssen ... –

0

Hallo i verwendet Linqtoxml und erfolgreich in der Lage zu analysieren Rss Feed versuchen Code unten

public apheadlines() 
     { 
      InitializeComponent(); 
      InitializeComponent(); 
      WebClient downloader = new WebClient(); 
      Uri rssurl = new Uri("http://ibnlive.in.com/ibnrss/rss/southcinema/telugunews.xml", UriKind.Absolute); 
      downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(downloads); 
      downloader.DownloadStringAsync(rssurl); 
     } 


private void downloads(object sender, DownloadStringCompletedEventArgs e) 
     { 
      if (e.Result == null) 
      { 
       MessageBox.Show("Error in download"); 
      } 
      var Rss = from rss in XElement.Parse(e.Result).Descendants("item") 
         select new Data 
         { 
          Titles = rss.Element("title").Value.ToUpper(), 
          pubDate = rss.Element("pubDate").Value.Substring(0, 17) 

         }; 

      listBox1.ItemsSource = Rss; 

     }