Parsing an XML file from RSS feed with namespaces in C#

dotnetlogo
The task is to parse a XML file retrieved from the RSS feed.
Below is the sample partial XML file taken from a Leading Geographical alerts website’s RSS feeds.

<?xml version="1.0" encoding="ISO-8859-1"?> 
<rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/"> 
<channel> 
<pubDate>Fri, 4 Jan 2008 09:51 GMT+1</pubDate> 

<item> 

<title>Red alert: Tropical Cyclone SINLAKU-08.</title> 
<description>Tropical Cyclone SINLAKU-08 .</description> 
<pubDate>Tue, 16 Sep 2008 06:00 GMT+1</pubDate> 
<geo:point> 
<geo:lat>27</geo:lat> 
<geo:long>124</geo:long> 
</geo:point> 
</item> 
<item> 

<title>Red alert: Tropical Cyclone IKE-08 .</title> 
<description>Tropical Cyclone IKE-08 .</description> 
<pubDate>Sun, 14 Sep 2008 09:00 GMT+1</pubDate> 
<geo:point> 
<geo:lat>36.400001526</geo:lat> 
<geo:long>-92.5</geo:long> 
</geo:point> 
</item> 

</channel> 
</rss>

As we can we there are two items(alerts) in the file one for Tropical Cyclone SINLAKU-08 and other for Tropical Cyclone IKE-08.

Lets write the code in c# to extract title,latitude and longitude of both the alerts.

First of all, lets load the XML data into the XMLDocument instance.

//include namespace for working with xml files
using System.Xml;
public partial class GoogleMap : System.Web.UI.Page
{
//creating new instance of xml document
XmlDocument xmlDoc = new XmlDocument();
protected void Page_Load(object sender, EventArgs e)
{
xmlDoc.Load(Server.MapPath(“~/XML Files/sourceRssEDIS.xml”));
//rest of the code described later will also be added here
}
}

Now, introduce the namespaces used in the xml file to the xmlDoc with the XmlNamespaceManager class instance.

XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmlDoc.NameTable);
nsMgr.AddNamespace(“geo”, “http://www.w3.org/2003/01/geo/”);

Select all the items in a array using GetElementsByTagName() method.

XmlNodeList nodes = xmlDoc.GetElementsByTagName(“item”);

Iterate for the elements inthe nodes array using for loop and select the latitude and longitude values using SelectNodes() method as shown below and then set the values of text of respective labels.

for (int i = 0; i < nodes.Count; i++) { XmlNodeList gpointnodeslat = nodes[i].SelectNodes("geo:point//geo:lat", nsMgr); XmlNodeList gpointnodeslong = nodes[i].SelectNodes("geo:point//geo:long", nsMgr); XmlNodeList titleNodes= nodes[i].SelectNodes("title"); Label lbllatitude=new Label(); Label lbllongitude = new Label(); Label lbltitle = new Label(); latitude.Text = gpointnodeslat[0].InnerText; longitude.Text = gpointnodeslong[0].InnerText; lbltitle.Text = titleNodes[0].InnerText; } [/sourcecode] In this way, any tag in the xml file can be searched for which is either with a namespace or not. kick it on DotNetKicks.com

New Way to Pass Querystrings into Dynamically Loaded Usercontrol in ASP.NET

aspnetlogo

Problem:
How to pass values into a usercontrol as querystrings in asp.net.
More References to the problem as as follows:

Solution:

  1. One Can definitely use Session Variables to give the functionality. Set the session variable value in the page and then retrieve the value in the user control.
  2. Another way is to set the Public Property for the userControl.
  3. And one solution is described below which i implemented successfully. It also works for dynamically loaded usercontrol.

The Alternative New Method:

Method is simple:

  1. Add Invisible buttons(or label) to the user control on the page where it will be rendered.
  2. Set the text property of the buttons to the value of the querystring.

    UserControl mycontrol = new UserControl();
    mycontrol = (UserControl)Page.LoadControl(“./UserControls/CustomCallDetailsChart.ascx”);

    Button btnName=new Button();
    btnName.Visible = false;
    btnName.Text=this.Name;
    mycontrol.Controls.AddAt(0, btnName);

    this.Controls.Add(mycontrol);

  3. In the page load event of the usercontrol find the control and typecast the text value to the required datatype.
    protected void Page_Load(object sender, EventArgs e)
    {
    Button btnName = (Button)this.Controls[0];
    this.ChartName = btnName.Text.ToString();
    }

kick it on DotNetKicks.com

Microsoft Surface

surface-logo
Ever wondered even if you could see the contents of your mobile phone on a table as soon as you put the device on the table!!!

Or if you could drag a physical photograph of yours[which is also kept on table] towards the mobile and a copy of it gets stored into the mobile phone.

All this might seem to be a midnight dream of mine to you but all this along with much more has become reality.

Enter Microsoft Surface, an implementation of surface technology wherein the aim is to replace monitors and other output and input devices and bring in the contents of a computer or a device on a table or any other kind of surface and let the user interact with touches.

Microsoft surface

Users interact with surface as shown in image below
Users Interacting with surface

Checkout the cool videos of microsoft surface and learn more about it at Official Homepage of Surface.I hope you will be amazed to look at the possiblities and somewhere in your mind a thought will come that yes our dreams have started becoming true with the help of technology.