读取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;