void BuildSiteMapRecursive(XmlNode xmlNode, SiteMapNode parent) { if (xmlNode.Name != "siteMapNode") { throw new ConfigurationException("incorrect element name", xmlNode); } string attrValue = GetNonEmptyOptionalAttribute(xmlNode, "provider"); if (attrValue != null) { SiteMapProvider provider = SiteMap.Providers [attrValue]; if (provider == null) { throw new ProviderException("Provider with name [" + attrValue + "] was not found."); } provider.ParentProvider = this; SiteMapNode providerRoot = provider.GetRootNodeCore(); if (parent == null) { root = providerRoot; } else { AddNodeNoCheck(providerRoot, parent); } return; } attrValue = GetNonEmptyOptionalAttribute(xmlNode, "siteMapFile"); if (attrValue != null) { var nvc = new NameValueCollection(); nvc.Add("siteMapFile", attrValue); string description = GetOptionalAttribute(xmlNode, "description"); if (!String.IsNullOrEmpty(description)) { nvc.Add("description", description); } string name = MapUrl(attrValue); var provider = new XmlSiteMapProvider(); provider.Initialize(name, nvc); SiteMapNode providerRoot = provider.GetRootNodeCore(); if (parent == null) { root = providerRoot; } else { AddNodeNoCheck(providerRoot, parent); } return; } SiteMapNode curNode = ConvertToSiteMapNode(xmlNode); if (parent == null) { root = curNode; } else { AddNodeNoCheck(curNode, parent); } XmlNodeList childNodes = xmlNode.ChildNodes; if (childNodes == null || childNodes.Count < 1) { return; } foreach (XmlNode child in childNodes) { if (child.NodeType != XmlNodeType.Element) { continue; } BuildSiteMapRecursive(child, curNode); } }
void BuildSiteMapRecursive (XmlNode xmlNode, SiteMapNode parent) { if (xmlNode.Name != "siteMapNode") throw new ConfigurationException ("incorrect element name", xmlNode); string attrValue = GetNonEmptyOptionalAttribute (xmlNode, "provider"); if (attrValue != null) { SiteMapProvider provider = SiteMap.Providers [attrValue]; if (provider == null) throw new ProviderException ("Provider with name [" + attrValue + "] was not found."); provider.ParentProvider = this; SiteMapNode providerRoot = provider.GetRootNodeCore(); if (parent == null) root = providerRoot; else AddNodeNoCheck (providerRoot, parent); return; } attrValue = GetNonEmptyOptionalAttribute (xmlNode, "siteMapFile"); if (attrValue != null) { var nvc = new NameValueCollection (); nvc.Add ("siteMapFile", attrValue); string description = GetOptionalAttribute (xmlNode, "description"); if (!String.IsNullOrEmpty (description)) nvc.Add ("description", description); string name = MapUrl (attrValue); var provider = new XmlSiteMapProvider (); provider.Initialize (name, nvc); SiteMapNode providerRoot = provider.GetRootNodeCore (); if (parent == null) root = providerRoot; else AddNodeNoCheck (providerRoot, parent); return; } SiteMapNode curNode = ConvertToSiteMapNode (xmlNode); if (parent == null) root = curNode; else AddNodeNoCheck (curNode, parent); XmlNodeList childNodes = xmlNode.ChildNodes; if (childNodes == null || childNodes.Count < 1) return; foreach (XmlNode child in childNodes) { if (child.NodeType != XmlNodeType.Element) continue; BuildSiteMapRecursive (child, curNode); } }