I have been trying to parse the below XML file (kuler rss feed). I have read the various posts on this site but am unable to piece them together.
I specifically want to extract the child(or siblings) nodes of the element <kuler:themeItem>.
However I am getting an exception :
Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
Pl help : C# 3.0 >net framework 3.5
RSS feed snippet:
<?xml version="1.0" encoding="UTF-8" ?>
- <rss xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:kuler="http://kuler.adobe.com/kuler/API/rss/" xmlns:rss="http://blogs.law.harvard.edu/tech/rss" version="2.0">
- <channel>
<title>kuler recent themes</title>
<link>http://kuler.adobe.com/</link>
<description>most recent themes published on kuler (1 to 20 of 332518)</description>
<language>en-us</language>
<pubDate>Wed, 07 Apr 2010 08:41:31 PST</pubDate>
<lastBuildDate>Wed, 07 Apr 2010 08:41:31 PST</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>Kuler Services</generator>
<managingEditor>[email protected]</managingEditor>
<webMaster>[email protected]</webMaster>
<recordCount>332518</recordCount>
<startIndex>0</startIndex>
<itemsPerPage>20</itemsPerPage>
- <item>
<title>Theme Title: Muted Graph</title>
<link>http://kuler.adobe.com/index.cfm#themeID/856075</link>
<guid>http://kuler.adobe.com/index.cfm#themeID/856075</guid>
- <enclosure xmlns="http://www.solitude.dk/syndication/enclosures/">
<title>Muted Graph</title>
- <link length="1" type="image/png">
<url>http://kuler-api.adobe.com/kuler/themeImages/theme_856075.png</url>
</link>
</enclosure>
<description><img src="http://kuler-api.adobe.com/kuler/themeImages/theme_856075.png" /><br /> Artist: tischt<br /> ThemeID: 856075<br /> Posted: 04/07/2010<br /> Hex: F1E9B2, 3D3606, 2A3231, 4A0A07, 424431</description>
- <kuler:themeItem>
<kuler:themeID>856075</kuler:themeID>
<kuler:themeTitle>Muted Graph</kuler:themeTitle>
<kuler:themeImage>http://kuler-api.adobe.com/kuler/themeImages/theme_856075.png</kuler:themeImage>
- <kuler:themeAuthor>
<kuler:authorID>216099</kuler:authorID>
<kuler:authorLabel>tischt</kuler:authorLabel>
</kuler:themeAuthor>
<kuler:themeTags />
<kuler:themeRating>0</kuler:themeRating>
<kuler:themeDownloadCount>0</kuler:themeDownloadCount>
<kuler:themeCreatedAt>20100407</kuler:themeCreatedAt>
<kuler:themeEditedAt>20100407</kuler:themeEditedAt>
- <kuler:themeSwatches>
- <kuler:swatch>
<kuler:swatchHexColor>F1E9B2</kuler:swatchHexColor>
<kuler:swatchColorMode>rgb</kuler:swatchColorMode>
<kuler:swatchChannel1>0.945098</kuler:swatchChannel1>
<kuler:swatchChannel2>0.913725</kuler:swatchChannel2>
<kuler:swatchChannel3>0.698039</kuler:swatchChannel3>
<kuler:swatchChannel4>0.0</kuler:swatchChannel4>
<kuler:swatchIndex>0</kuler:swatchIndex>
</kuler:swatch>
My Code so far:
static void Main(string[] args)
{
const string feedUrl =
"http://kuler-api.adobe.com/rss/get.cfm?listtype=recent&key=xxxx";
var doc = new XmlDocument();
var request = WebRequest.Create(feedUrl) as HttpWebRequest;
using (var response = request.GetResponse() as HttpWebResponse)
{
var reader = new StreamReader(response.GetResponseStream());
doc.Load(reader);
}
XmlNodeList rsslist = doc.SelectNodes("//rss/channel/item/kuler:themeItem");
for (int i = 0; i < rsslist.Count; i++)
{
XmlNode rssdetail = rsslist.Item(i).SelectSingleNode("kuler:themeTitle");
string title = rssdetail.InnerText;
Console.WriteLine(title);
}
}
}
EDIT: Solved. Had to add in namespaces and finally fugured out how to do that.