RSS 피드 를 읽는 가장 좋은 방법은 무엇입니까 ?
나는 XmlTextReader
이것을 달성하기 위해 사용 하고 있습니다. 다른 최선의 방법이 있습니까?
XmlTextReader reader = new XmlTextReader(strURL);
DataSet ds = new DataSet();
ds.ReadXml(reader);
를 사용하여 RSS 피드 를 읽은 후 대신 XmlTextReader
데이터를 채울 수있는 방법 ListItem
이 DataSet
있습니까?
답변
System.ServiceModel
참조 추가
사용 SyndicationFeed
:
string url = "http://fooblog.com/feed";
XmlReader reader = XmlReader.Create(url);
SyndicationFeed feed = SyndicationFeed.Load(reader);
reader.Close();
foreach (SyndicationItem item in feed.Items)
{
String subject = item.Title.Text;
String summary = item.Summary.Text;
...
}
답변
이 글은 오래된 글이지만 제가 한 것처럼 지금 여기에 오시면 사람들의 시간을 절약하기 위해 더 넓은 범위의 RSS 버전을 지원하고 사용하기 쉽고 더 강력 해 보이는 CodeHollow.FeedReader 패키지를 살펴 보시기 바랍니다. . https://github.com/codehollow/FeedReader
답변
당신은 정확히 그것을 하는 SyndicationFeed
클래스를 찾고 있습니다.
답변
이것을 사용하십시오 :
private string GetAlbumRSS(SyndicationItem album)
{
string url = "";
foreach (SyndicationElementExtension ext in album.ElementExtensions)
if (ext.OuterName == "itemRSS") url = ext.GetObject<string>();
return (url);
}
protected void Page_Load(object sender, EventArgs e)
{
string albumRSS;
string url = "http://www.SomeSite.com/rss";
XmlReader r = XmlReader.Create(url);
SyndicationFeed albums = SyndicationFeed.Load(r);
r.Close();
foreach (SyndicationItem album in albums.Items)
{
cell.InnerHtml = cell.InnerHtml +string.Format("<br \'><a href='{0}'>{1}</a>", album.Links[0].Uri, album.Title.Text);
albumRSS = GetAlbumRSS(album);
}
}
답변
업데이트 : UWP에서만 지원 -Windows Community Toolkit
이제 훨씬 더 쉬운 방법이 있습니다. RssParser 클래스를 사용할 수 있습니다 . 샘플 코드는 다음과 같습니다.
public async void ParseRSS()
{
string feed = null;
using (var client = new HttpClient())
{
try
{
feed = await client.GetStringAsync("https://visualstudiomagazine.com/rss-feeds/news.aspx");
}
catch { }
}
if (feed != null)
{
var parser = new RssParser();
var rss = parser.Parse(feed);
foreach (var element in rss)
{
Console.WriteLine($"Title: {element.Title}");
Console.WriteLine($"Summary: {element.Summary}");
}
}
}
비 UWP의 경우 System.ServiceModel.Syndication
다른 사람들이 제안한대로 네임 스페이스의 신디케이션을 사용하십시오 .
public static IEnumerable <FeedItem> GetLatestFivePosts() {
var reader = XmlReader.Create("https://sibeeshpassion.com/feed/");
var feed = SyndicationFeed.Load(reader);
reader.Close();
return (from itm in feed.Items select new FeedItem {
Title = itm.Title.Text, Link = itm.Id
}).ToList().Take(5);
}
public class FeedItem {
public string Title {
get;
set;
}
public string Link {
get;
set;
}
}