среда, 12 ноября 2008 г.

Windows RSS Platform

Возможно кто-то еще не знает, но с выходом Internet Explorer 7 появилась т.н. Windows RSS Platform. Это набор API позволяющий получить доступ к тем rss-записям, что загрузил IE7. Подробно про API можно почитать здесь (на английском), а пока несколько примеров.

Объектная модель вот такая:



Получить полный список каналов можно вот так:
        public void FillTree()
        {
            IFeedFolder iff = ((IFeedFolder) fm.RootFolder);

            treeView1.BeginUpdate();
            AppendFeeds(iff, null);
            treeView1.EndUpdate();
        }

        void AppendFeeds(IFeedFolder folder, TreeNode parent)
        {
            TreeNode old_parent = parent;


            foreach (IFeedFolder subfolder in (IFeedsEnum)folder.Subfolders)
            {
                if (parent == null)
                    parent = treeView1.Nodes.Add(subfolder.Name);
                else
                    parent = parent.Nodes.Add(subfolder.Name);
                AppendFeeds(subfolder, parent);
            }

            parent = old_parent;

            foreach (IFeed feed in (IFeedsEnum)folder.Feeds)
            {
                if (parent == null)
                    treeView1.Nodes.Add(feed.Name);
                else
                    parent.Nodes.Add(feed.Name);
            }
        }

В данном случае я заполняю данными TreeView, поскольку в общем виде мы имеем древовидную структуру, если вспомнить про возможность распределять каналы по папкам и подпапкам. Соответственно, самый простой способ - рекурсивная функция.

Чтобы получить выбранный из списка канал, надо указать его полное имя, включающее все папки и подпапки. Примерно вот так:

IFeed feed = (IFeed)fm.GetFeed(e.Node.FullPath);

Ну а дальше ничего сложного :)

Комментариев нет:

Отправить комментарий