Hvordan vise en rss feed på en enkel måte med ASP.NET og C#

Utveksle data via RSS er mer populært enn noen gang og stort sett alle store nettsteder tilbyr dette. Jeg har ofte laget portaler som ønsker å utnytte dette og vise data fra andre nettsteder på sin egen portal og det finnes en utrolig enkel måte å gjøre dette på. Artikkelen har screencast! Se nederst i artikkelen.

I dette eksempelet bruker jeg to asp.net servercontrols og en liten kode i C#. Dette er så enkelt at hvem som helst kan sette det opp på et par minutter. Det eneste du må vite er url’en til den feed du vil vise 😉

Først setter vi inn en asp:Repeater som skal liste ut hver post (item) i den feed vi skal vise. Deretter bruker vi en asp:XmlDataSource for å laste ned feed’en og binde den til repeateren.

<ul class="rss">
<asp:Repeater runat="server" ID="repRss">
    <ItemTemplate>
        <li>
            <h3>
                <a href="<%#XPath("link") %>">
                    <%#XPath("title") %>
                </a> 
                <%#XPath("pubDate") %>
            </h3>
            <p>
                <%#XPath("description") %>
            </p>
        </li>
    </ItemTemplate>
</asp:Repeater>
</ul>

<asp:XmlDataSource 
    runat="server" 
    ID="dsRss" 
    CacheDuration="360" 
    XPath="/rss/channel/item" 
    DataFile="https://serverside.no/Rss/Articles.aspx"
/>

Repeateren looper ut en ul/li liste for hvert feed-item i den rss vi kobler oss til. Denne kan du selvfølgelig style med css etter eget ønske. Man kan endre CacheDuration til det som er mest hensiktsmessig, men man bør ha en verdi som cacher feed’en slik at nedlastingen ikke bremser hastigheten på din side. CacheDuration angir hvor mange sekunder det skal ta mellom hver gang feed’en lastes ned på nytt. Nå gjenstår det bare å legge inn litt kode for å binde dataene fre feed’en til repeateren:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostback())
    {
        this.repRss.DataSource = dsRss;
        this.repRss.DataBind();
    }
}