private void SetFeedLink(XPathNavigator xPathNavigator, IXmlNamespaceResolver xmlNamespaceManager)
{
// Create link from the first link element in feed with rel = 'alternative'
var linkiterator = xPathNavigator.Select("atom:feed/atom:link", xmlNamespaceManager);
while (linkiterator.MoveNext() && Url == null)
{
var linknav = linkiterator.Current;
if (linknav == null || !linknav.HasAttributes) continue;
var rel = linknav.GetAttribute("rel", "");
if (rel.Equals("alternate"))
{
Url = new Uri(linknav.GetAttribute("href", ""));
}
}
// If no link with rel = 'alternate' in the feed, just pick the first link
if (Url == null)
{
var linknode = xPathNavigator.SelectSingleNode("/atom:feed/atom:link", xmlNamespaceManager);
if (linknode != null)
{
Uri result;
if (Uri.TryCreate(linknode.GetAttribute("href", ""), UriKind.Absolute, out result))
{
Url = result;
}
}
}
}