Quantcast
Channel: Code Inside Blog
Viewing all articles
Browse latest Browse all 358

RSS Feed samt Kommentaranzahl und andere nicht Standard Elemente mit dem SyndicationFeed auslesen

$
0
0

Jetzt mal ein Blogpost ohne ein fancy NuGet Package: Seit .NET 3.5 gibt es die SyndicationFeed Klasse. Eine schon etwas ältere API, reicht aber aus um Atom bzw. RSS Feeds zu lesen. In diversen RSS Feeds gibt es aber Erweiterungen, welche man natürlich auch auslesen möchte.

So gibt Wordpress z.B. auch die Anzahl der geposteten Kommentare weiter (mehr dazu z.B. auf mozilla.org) :

image

Diese sind allerdings nicht direkt im SyndicationItem abgebildet, können jedoch relativ einfach mit abgefragt werden. Alle nicht “erkannten” Elemente verbleiben im Property ElementExtensions, welches über Bordmitteln auch wieder auszulesen ist:

    class Program
    {
        static void Main(string[] args)
        {
            var reader = XmlReader.Create("http://blog.codeinside.eu/feed");
            var feed = SyndicationFeed.Load(reader);

            foreach (var feedItem in feed.Items)
            {
                int commentCount = 0;

                Console.WriteLine(feedItem.Title.Text);

                foreach (SyndicationElementExtension extension in feedItem.ElementExtensions)
                {
                    XElement extensionElement = extension.GetObject<XElement>();

                    if (extensionElement.Name.LocalName == "comments" && extensionElement.Name.NamespaceName == "http://purl.org/rss/1.0/modules/slash/")
                    {
                        Console.WriteLine("Comments: " + extensionElement.Value);
                    }
                }
            }

            Console.ReadLine();
        }
    }

Für die Syndication-Klassen wird die Assembly “System.ServiceModel” benötigt.

image

Gebraucht hatte ich diese Funktionalität für den “Hub”:

image

Damit sollte es klappen. Der Code ist natürlich auch auf GitHub zu finden.


Viewing all articles
Browse latest Browse all 358

Trending Articles