Получение XML-данных с помощью XmlDataSource в ASP.NET 2.0 - Пример 1: Отображение RSS 2.0 ленты в DataList
ОГЛАВЛЕНИЕ
Пример 1: Отображение RSS 2.0 ленты в DataList
RSS (Really Simple Syndication), это XML-формат разработанный для того, чтобы позволить веб-сайтам публиковать свое содержимое. Содержимое может быть с легкостью интегрировано в другие веб-сайты, либо может быть просмотрено кем-то посредством набора настольных приложений. Многие сайты на сегодняшний день используют RSS 2.0 ленту.
RSS-лента может иметь следующий формат:
<rss version="2.0">
<channel>
<title>News by Scott</title>
<link>http://www.example.com</link>
<description>Hear the news from Scott.</description>
<item>
<title>Exercise to Stay Fit</title>
<link>http://www.example.com/news.aspx?Id=4</link>
<description>
Doctors are currently studying whether exercise improves
physical fitness. The results are expected in 2009.
</description>
<pubDate>Wed, 20 Sep 2006 03:15:00 GMT</pubDate>
</item>
<item>
<title>(Still) War in the Middle East</title>
<link>http://www.example.com/news.aspx?Id=2</link>
<description>
Historians remain baffled that turmoil in the Middle East
still reigns. Is it time for both sides to shake hands
and make up?
</description>
<pubDate>Tue, 19 Sep 2006 06:31:15 GMT</pubDate>
</item>
...
</channel>
</rss>
Вкратце, RSS-лента составлена из набора элементов <item>, каждый из которых представляет последнюю опубликованную часть содержимого.
Для данного примера нам необходимо привязать набор элементов содержимого к DataList. Таким образом, установите свойство DataFile элемента управления XmlDataSource в указатель ресурса источника удаленной RSS 2.0 ленты (к примеру, http://aspnet.4guysfromrolla.com/rss/rss.aspx) и свойство XPath в /rss/channel/item. Данное выражение XPath указывает XmlDataSource на то, чтобы оно вернуло набор элементов <item>, что означает, что DataList-привязка к данному XmlDataSource будет иметь одну запись, созданную для каждого элемента <item> в указанной ленте RSS.
Далее добавьте DataList и настройте его ItemTemplate на отображение элементов <title>, <description> и <pubDate><link>). Следующая разметка выполняет это: каждого элемента содержимого, также с ссылкой для чтения содержимого (при помощи значения элемента
<asp:DataList ID="FeedList" runat="server" DataSourceID="RSSFeedDataSource">
<ItemTemplate>
<h4>
<a href='<%# XPath("link") %>'>
<asp:Label runat="server" ID="TitleLabel" Text='<%# XPath("title") %>'></asp:Label>
</a>
</h4>
<p>
<i>Published <%#XPath("pubDate")%></i>
</p>
<p>
<asp:Label runat="server" ID="DescriptionLabel" Text='<%# XPath("description") %>'></asp:Label>
</p>
<p>
[<a href='<%# XPath("link") %>'>Read More</a>]
</p>
<br />
</ItemTemplate>
</asp:DataList>
Заметьте как используется синтаксис <# XPath("xpath") %> для получения конкретного значения из текущего узла привязанного к DataList. Поскольку DataList привязан к набору узлов <item>, <%# XPath("link") %> возвратит значение текущего элемента <link> узла <item>.
После указания ItemTemplate, просмотрите страницу в обозревателе. Следующее изображение показывает результат RSS ленты.
