Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C在.net中读取rss提要的最佳方法_C#_Rss_Xmltextreader - Fatal编程技术网

C# 使用C在.net中读取rss提要的最佳方法

C# 使用C在.net中读取rss提要的最佳方法,c#,rss,xmltextreader,C#,Rss,Xmltextreader,阅读RSS提要的最佳方式是什么 我使用XmlTextReader来实现这一点。还有其他最好的方法吗 XmlTextReader reader = new XmlTextReader(strURL); DataSet ds = new DataSet(); ds.ReadXml(reader); 在使用XmlTextReader读取RSS提要之后,是否有任何方法可以将数据填充到ListItem而不是DataSet 您正在查找,它正是这样做的。在引用中添加System.ServiceModel

阅读RSS提要的最佳方式是什么

我使用XmlTextReader来实现这一点。还有其他最好的方法吗

XmlTextReader reader = new XmlTextReader(strURL);

DataSet ds = new DataSet();
ds.ReadXml(reader);
在使用XmlTextReader读取RSS提要之后,是否有任何方法可以将数据填充到ListItem而不是DataSet

您正在查找,它正是这样做的。

在引用中添加System.ServiceModel

使用:

使用以下命令:

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);

        }



    }

这是一篇老文章,但是如果你现在像我一样来到这里,为了节省一些时间,我建议你看看CodeHollow.FeedReader包,它支持更广泛的RSS版本,更易于使用,看起来更健壮

更新:这仅支持UWP-Windows社区工具包

现在有一个更简单的方法。你可以使用这个类。下面给出了示例代码

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;
    }
}

这是斯齐兹。令人敬畏且简洁。您还需要使用System.Xml;但这是相当明显的。对于Blogger,url当前为Atom 1.0,而对于RSS 2.0。SyndicationItem项目具有您需要的所有项目属性。只需在Visual Studio调试器中检查对象并加以说明。我们可以使用XmlTextReader而不是xmlreader吗?有任何性能差异吗?简短而甜美。非常感谢。对于.Net Core,您要安装以使用它的NuGet软件包是System.ServiceModel.Syndication2019,每当我尝试访问唯一的预发布版本时,它就会崩溃。
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;
    }
}