读取RSS提要中的特定标记

我有以下RSS提要。 我想阅读特定描述标签内的信息。 例如,当标题标签包含当前日期时,我想获取description标签中的信息。我无法弄清楚如何执行此操作。 请帮忙

 Forecast for Saturday as of Jul. 14 5:30 AM IST //If today is Saturday get information in description tag http://www.wunderground.com/global/stations/43466.html  Thunderstorm. Low:26 ° C.  Sat, 14 Jul 2012 00:00:00 GMT 1342267200-1-night   Forecast for Sunday as of Jul. 14 5:30 AM IST http://www.wunderground.com/global/stations/43466.html  Chance of a Thunderstorm. High:30 ° C.  Sat, 14 Jul 2012 00:00:00 GMT 1342353600-2-day  

我能够使用以下方式获取当天:

 string datenow = DateTime.Today.ToString("dddd / M / yyyy"); string[] words= datenow.Split(' '); string day = words[0]; 

这就是我阅读RSS提要的方式:

  public class RssReader { public static List Read(string url) { var webClient = new WebClient(); string result = webClient.DownloadString(url); XDocument document = XDocument.Parse(result); return (from descendant in document.Descendants("item") select new RssNews() { Description = descendant.Element("description").Value, Title = descendant.Element("title").Value, PublicationDate = descendant.Element("pubDate").Value }).ToList(); } } 

根据您的要求,您只想获得当天的描述。您有包含标题的新闻提要列表,说明..现在您可以更改您的课程(在您的课程中添加方法)如果当天是当天

public static string GetCurrentDayDescription(){

  var lst = Read("url"); var resDescription = (from x in lst where x.Title.Contains(day) select x.Description).ToArray() ; return resDescription[0] ; } 

您应该能够使用XmlSerializer直接反序列化rss feed而无需手动映射。您需要修改RssNews对象才能正确映射,例如:

 [XmlRoot(ElementName="item")] public class RssNews { [XmlElement(ElementName = "title")] public string Title { get; set; } [XmlElement(ElementName = "pubDate")] public string PublicationDate { get; set; } [XmlElement(ElementName = "description")] public string Description { get; set; } [XmlElement(ElementName = "link")] public string Link { get; set; } [XmlElement(ElementName = "guid")] public string Description { get; set; } } 

现在你应该可以使用反序列化器了:

  var feed = new List(); using (var webClient = new WebClient()) { string result = webClient.DownloadString(url); using (var stringReader = new StringReader(result)) { var serializer = new XmlSerializer(feed.GetType()); feed = (List)serializer.Deserialize(stringReader); } } return feed;