.Net frameworkのSyndicationFeedクラスを使ってYahoo Media RSS(MRSS)などの拡張フィードを取得するには

2009年11月27日

SyndicationFeedに含まれるSyndicationItemのElementExtensionsプロパティを使って取得可能。

たとえば下記のように、サムネールを取得することが可能である。

        private static readonly XNamespace NS_YAHOO_MEDIA_RSS = “http://search.yahoo.com/mrss/“;

        public static string GetThubmnailUri(SyndicationItem item)
        {
            var extensions = item.ElementExtensions.Where<SyndicationElementExtension>(
               obj => obj.OuterNamespace == NS_YAHOO_MEDIA_RSS).ToArray();
            XmlReader reader = extensions[0].GetReader();
            XElement topElem = (XElement)XElement.ReadFrom(reader);
            XElement thumbElem = topElem.Elements(NS_YAHOO_MEDIA_RSS + “thumbnail”).FirstOrDefault();
            if (thumbElem != null)
            {
                XAttribute attr = thumbElem.Attribute(“url”);
                if (attr != null)
                {
                    return attr.Value;
                }
            }
            return string.Empty;
        }

コメントは受け付けていません。