65.9K
CodeProject is changing. Read more.
Home

Build a Blog Page Consuming a XML Feed

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.76/5 (9 votes)

Oct 2, 2007

CPOL
viewsIcon

47911

downloadIcon

596

How to build a blog page using an XML feed

Screenshot - buildrssblog2.gif

Introduction

In this article, I'll show a code snippet I made in order to create a small blog using the web feed provided by another blog engine.

The Code

Let's see the snippet that retrieves the data from the feed:

protected void dataBind()
{
    //open RSS xml file

    XmlTextReader reader =
        new XmlTextReader("http://www.compranapoli.it/blog/rss.xml");

    DataSet ds = new DataSet();
    ds.ReadXml(reader); //put the rss in a dataset

    // Assigns the datset to the datagrid
    GridView1.DataSource = ds.Tables[2];

    // Binds the datagrid
    GridView1.DataBind();
}

The method dataBind() opens the file rss.xml using a XmlTextReader, puts the content in a DataSet and sets one of the tables of the dataset to the GridView I used to show the data.
This is the code I made to modify the look and feel of the GridView:

<asp:GridView ID="GridView1" runat="server" 
        AutoGenerateColumns="false" BorderWidth="0"/>
 <Columns>
   <asp:TemplateField>
     <ItemTemplate>
      <h1><%# Eval("title") %></h1>
      <hr />
      <h4><%# Eval("pubDate")%></h4><br />
      <%# Eval("description")%><br /><br />
     </ItemTemplate>
   </asp:TemplateField>
 </Columns>
</asp:GridView>

The GridView doesn't handle the paging of the XML data source by default. So, I needed to add the following method to handle the paging:

// Grid View Paging 

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}

This is the result I had calling dataBind() on page load and using an elegant CSS:

Screenshot - buildrssblog1.jpg

History

  • [2-OCT-2007]: First version of the XML parser classes released
  • [4-OCT-2007]: Added source files
  • [31-OCT-2011]: Main revision of the article, the code is the same as before