public static List <ConnConfigInfo> AnalyzeSection(XmlDocument doc, Type baseType) { var list = new List <ConnConfigInfo>(); var cfgSections = doc.SelectNodes("configuration/configSections/section"); foreach (XmlNode node in cfgSections) { try { if (node.Attributes["type"] != null) { var str = node.Attributes["type"].Value; var name = node.Attributes["name"].Value; var type = Type.GetType(str); if (baseType.IsAssignableFrom(type)) { var ele = doc.SelectSingleNode("configuration/" + name); if (ele != null) { var isEncrypt = false; if (ele.Attributes["UseEncryption"] != null) { isEncrypt = bool.Parse(ele.Attributes["UseEncryption"].Value); } var info = new ConnConfigInfo { IsSuccess = true, ErrMessage = "配置正确", ConnConfigName = name, ConnType = "common.database", HandleType = type, IsEncrypt = isEncrypt, ItsNode = node, }; list.Add(info); } } } } catch (Exception ex) { var info = new ConnConfigInfo { IsSuccess = false, ErrMessage = ex.Message, }; list.Add(info); } } return(list); }
public static List <ConnConfigInfo> AnalyzeFactory(XmlDocument doc, Type baseType) { var list = new List <ConnConfigInfo>(); var xmlnsm = new XmlNamespaceManager(doc.NameTable); xmlnsm.AddNamespace("urn", "urn:nhibernate-configuration-2.2"); var factories = doc.SelectNodes("urn:hibernate-configuration/urn:session-factory", xmlnsm); foreach (XmlNode node in factories) { try { var name = node.Attributes["name"].Value; var isEncrypt = false; Type type = null; foreach (XmlNode prop in node.SelectNodes("urn:property", xmlnsm)) { if (prop.Attributes["name"].Value.Equals("connection.provider", StringComparison.OrdinalIgnoreCase)) { type = Type.GetType(prop.InnerText); if (baseType.IsAssignableFrom(type)) { isEncrypt = true; } break; } } var info = new ConnConfigInfo { IsSuccess = true, ErrMessage = "配置正确", ConnConfigName = name, ConnType = "nhibernate", HandleType = type, IsEncrypt = isEncrypt, ItsNode = node, }; list.Add(info); } catch (Exception ex) { var info = new ConnConfigInfo { IsSuccess = false, ErrMessage = ex.Message, }; list.Add(info); } } return(list); }