LinqtoXML анализирует RSS-контент: закодирован - PullRequest
2 голосов
/ 12 мая 2009

Я пытаюсь разобрать канал RSS, используя Linq to XML, примерно так:

        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, нельзя включить в имя."

Как, черт возьми, я могу разобрать этот элемент?

Ответы [ 3 ]

8 голосов
/ 12 мая 2009
XNamespace nsContent = "http://purl.org/rss/1.0/modules/content/";

// ...

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

// ...
1 голос
/ 12 мая 2009

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

Подробнее здесь

0 голосов
/ 11 сентября 2013

Привет! Я использовал 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;

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...