我有以下RSS提要。我想读取特定描述标签内的信息。例如,我想在其标题标签包含当前日期时获取描述标签中的信息。我无法弄清楚如何执行此操作。请帮忙
<item>
<title>Forecast for Saturday as of Jul. 14 5:30 AM IST</title> //If today is Saturday get information in description tag
<link>http://www.wunderground.com/global/stations/43466.html</link>
<description>
Thunderstorm. Low:26 &deg; C.
</description>
<pubDate>Sat, 14 Jul 2012 00:00:00 GMT</pubDate>
<guid isPermaLink="false">1342267200-1-night</guid>
</item>
<item>
<title>Forecast for Sunday as of Jul. 14 5:30 AM IST</title>
<link>http://www.wunderground.com/global/stations/43466.html</link>
<description>
Chance of a Thunderstorm. High:30 &deg; C.
</description>
<pubDate>Sat, 14 Jul 2012 00:00:00 GMT</pubDate>
<guid isPermaLink="false">1342353600-2-day</guid>
</item>
我能够使用以下方式获取当天:
string datenow = DateTime.Today.ToString("dddd / M / yyyy");
string[] words= datenow.Split(' ');
string day = words[0];
这就是我阅读RSS提要的方式:
public class RssReader
{
public static List<RssNews> 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();
}
}
答案 0 :(得分:1)
您应该能够使用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<RssNews>();
using (var webClient = new WebClient())
{
string result = webClient.DownloadString(url);
using (var stringReader = new StringReader(result))
{
var serializer = new XmlSerializer(feed.GetType());
feed = (List<RssNews>)serializer.Deserialize(stringReader);
}
}
return feed;
答案 1 :(得分:1)
根据您的要求,您只想获得当天的描述。您有包含标题,说明..的新闻Feed列表现在您可以更改您的课程(在您的班级中添加方法)如果当天是当天< / p>
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] ;
}