2009-05-12 3 views
2

Я пытаюсь разобрать RSS-канал с помощью Linq для XML следующим образом:LinqtoXML разборе RSS содержание: кодируются

 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 
        }; 

Однако; она имеет проблему с с содержанием: закодированный пункта я получаю эту ошибку «Символ„:“. символ, шестнадцатеричное значение 0x3a, не могут быть включены в название»

Как щеколда, чтобы я разобрать этот пункт элемент ?

ответ

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

// ... 

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

// ... 
1

Существует гораздо более простой способ для разбора RSS-канал: SyndicationFeed класс

Подробнее here

+0

В принципе то же самое, за исключением другого класса – dswatik

+0

Да, за исключением того, что вам не нужно беспокоиться о фактической схеме XML ... –

0

Привет я использовал Linqtoxml и успешно в состоянии разобрать RSS поток попробовать ниже код

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; 

     } 
Смежные вопросы