protected virtual SiteMapNode CreateNodeFromElement(XElement element, int currentLevel, Dictionary<string, SiteMapNode> nodeDictionary) { var attributes = new NameValueCollection(); foreach (var a in element.Attributes()) { attributes.Add(a.Name.ToString(), a.Value); } string uri; try { if (element.Attribute("uri") != null) uri = element.Attribute("uri").Value; else if (element.Attribute("pageId") != null) uri = element.Attribute("pageId").Value; else uri = ""; } catch { LoggerService.Debug("exception while retrieving uri", LoggingCategory.General); uri = ""; } NavigationNode childNode = new NavigationNode(this, element.Attribute("id").Value, //key uri, element.Attribute("url") != null ? element.Attribute("url").Value : element.Attribute("id").Value, //url element.Attribute("title").Value, //title element.Attribute("description").Value, //description null, //roles attributes, //attributes null, //explicitresourceKeys null) { Level = currentLevel }; // implicitresourceKey if (element.Element("NumberOfItemsInGroup") != null) childNode.NumberOfItemsInGroup = Convert.ToInt32(element.Element("NumberOfItemsInGroup").Value); else childNode.NumberOfItemsInGroup = MaxItemsInGroup; if (element.Element("NumberOfItemsPerColumn") != null) childNode.NumberOfItemsInColumn = Convert.ToInt32(element.Element("NumberOfItemsPerColumn").Value); nodeDictionary.Add(childNode.Key, childNode); return childNode; }