public static void GeneratePreCacheNavigation(Guid navId, string langKey, string role) { XElement xRolNavi = XElement.Parse("<Tree/>"); XElement xRolStruct = XElement.Parse("<Tree/>"); try { var NavStructureRecord = csb.hisp_Navigation_GetNavigationStructureXML(navId).SingleOrDefault(); XElement xmlStruct = XElement.Parse(NavStructureRecord.NST_XMLStruct); var NavLanguageRecord = csb.hisp_Navigation_GetNavigationLanguageXML(navId, langKey).SingleOrDefault(); if (NavLanguageRecord != null) { XElement xmlLanguage = XElement.Parse(NavLanguageRecord.NAV_XMLNames); //Get only Struct Nodes that are for the CurrentRole foreach (var xnode in xmlStruct.Elements("Node")) { XElement xnewChild = GetRoleNodes(xnode, role); if (xnewChild != null) { xRolStruct.Add(xnewChild); } } foreach (var xnode in xRolStruct.Elements("Node")) { XElement xnewChild = MergeWithLangData(xnode, xmlLanguage); if (xnewChild != null) { xRolNavi.Add(xnewChild); } } } csb.hisp_Navigation_SavePreChache(navId, langKey, role, xRolNavi.ToString()); } catch { } }