Получение 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 ленты.