xmltocache C#

XML 地址 http://blog.csdn.net/ylqmf/archive/2010/05/12/5581927.aspx

using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Configuration; using System.Web; using System.Web.Caching; using Care365.Model; namespace Care365.Tools { public abstract class GlobalConfig { /// <summary> /// 配置文件的绝对路径 /// </summary> public static readonly string _configPath = AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["GlobalConfig"]; /// <summary> /// XML配置对象 /// </summary> static XmlDocument _doc; /// <summary> /// 加载配置xml /// </summary> /// <returns></returns> public static XmlDocument LoadDocument() { Cache cache = HttpContext.Current.Cache; object temp = cache.Get("GlobalConfig"); if (temp != null) { XmlDocument doc = temp as XmlDocument; if (doc != null) { return _doc; } else { _doc = new XmlDocument(); _doc.Load(_configPath); cache.Insert("GlobalConfig", _doc, new CacheDependency(_configPath)); return _doc; } } else { _doc = new XmlDocument(); _doc.Load(_configPath); cache.Insert("GlobalConfig", _doc, new CacheDependency(_configPath)); return _doc; } } /// <summary> /// 重新加载配置xml /// </summary> public static void ReLoadDocument() { lock (_doc) { _doc = new XmlDocument(); _doc.Load(_configPath); } } /// <summary> /// 获取某个key下的value /// </summary> /// <param name="configKey"></param> /// <returns></returns> public static string GetConfigValue(string configKey) { LoadDocument(); if (_doc != null) { XmlNode node = _doc.SelectSingleNode("root/operation/" + configKey); if (node != null) { return node.InnerXml; } } return null; } /// <summary> /// 设置新值 /// </summary> /// <param name="value"></param> public static void SetConfigValue(string configKey, string configValue) { LoadDocument(); if (_doc != null) { XmlNode node = _doc.SelectSingleNode("root/operation/" + configKey); if (node != null) { node.InnerXml = configValue; lock (_doc) { _doc.Save(_configPath); } ReLoadDocument(); } } } /// <summary> /// 根据企业ID,查找企业功能配置对象 /// 如果没有配置企业功能,则返回默认的功能配置对象 /// 如果返回null,则配置文件有错误 /// </summary> /// <param name="ID">企业ID</param> /// <returns>企业功能配置对象</returns> public static CompanyConfig GetCompanyConfigByID(long ID) { LoadDocument(); if (_doc != null) { XmlNode node = _doc.SelectSingleNode("root/Companys/Company[@id=/"" + ID + "/"]"); if (node != null) { //找到了配置文件中关于该企业的配置 return GetCompanyConfig(node); } else { //在配置文件中没有该企业的id,使用默认配置 node = _doc.SelectSingleNode("root/Companys/Default"); if (node != null) { CompanyConfig cc = GetCompanyConfig(node); cc.Id = ID; return cc; } else { //文件中没有配置默认值,出错 return null; } } } else { //文件中没有配置,出错 return null; } } private static string getDefaultHomePage() { LoadDocument(); if (_doc != null) { XmlNode node = _doc.SelectSingleNode("root/Companys/Default/HomePage"); if (node != null) { return node.InnerText; } } return string.Empty; } /// <summary> /// 根据传入的node对象组装配置对象 /// </summary> /// <param name="node"></param> /// <returns>企业功能配置对象</returns> public static CompanyConfig GetCompanyConfig(XmlNode node) { CompanyConfig c = new CompanyConfig(); long id = 0; //企业ID if (node.Attributes["id"] != null && long.TryParse(node.Attributes["id"].Value, out id)) { c.Id = id; } //用户登录后的主页 XmlNode homepage = node.SelectSingleNode("HomePage"); if (homepage != null) { c.HomePage = homepage.InnerXml; } else c.HomePage = getDefaultHomePage(); //功能模块 XmlNodeList items = node.SelectNodes("Tabs/item"); if (items != null && items.Count > 0) { List<CompanyTab> list = new List<CompanyTab>(); foreach (XmlNode item in items) { CompanyTab t = new CompanyTab(); t.Name = item.Attributes["name"].Value; t.Enabled = item.Attributes["Enabled"].Value.Trim() == "1"; t.Href = item.Attributes["href"].Value.Trim(); t.Target = item.Attributes["target"].Value; t.Classname = item.Attributes["classname"].Value; t.Dclassname = item.Attributes["dclassname"].Value; XmlNodeList urls = item.SelectNodes("url"); if (urls != null && urls.Count > 0) { foreach (XmlNode url in urls) { t.Urls.Add(url.InnerXml); } } list.Add(t); } c.Tabs = list; } //功能模块 XmlNodeList buttons = node.SelectNodes("Buttons/Button"); if (buttons == null || buttons.Count == 0) { buttons = _doc.SelectNodes("root/Companys/Default/Buttons/Button"); } if (buttons != null && buttons.Count > 0) { List<Button> list = new List<Button>(); foreach (XmlNode item in buttons) { Button b = new Button(); b.Name = item.Attributes["name"].Value; b.ID = item.Attributes["id"].Value; XmlNodeList buttonitems = item.SelectNodes("item"); if (buttonitems != null && buttonitems.Count > 0) { foreach (XmlNode bitem in buttonitems) { ButtonItem bi = new ButtonItem(); bi.ID = bitem.Attributes["id"].Value; bi.Name = bitem.Attributes["name"].Value; bi.Enabled = bitem.Attributes["Enabled"].Value.Trim() == "1"; bi.href = bitem.Attributes["href"].Value.Trim(); bi.Target = bitem.Attributes["target"].Value.ToLower() == "_blank" ? ButtonItem.PageOpenMethod._blank : ButtonItem.PageOpenMethod._self; //if (bi.Enabled) b.Items.Add(bi); b.Items.Add(bi); } } list.Add(b); } c.ButtonList = list; } return c; } /// <summary> /// 保存企业默认首页 /// </summary> /// <param name="CompanyID">企业ID</param> /// <param name="HomePageUrl">主页URL</param> public static void SaveHomePage(long CompanyID, string HomePageUrl) { XmlDocument xml = LoadDocument(); if (_doc != null) { XmlNode r = _doc.SelectSingleNode("root"); if (r == null) { r = xml.CreateNode(XmlNodeType.Element, "root", null); _doc.AppendChild(r); } XmlNode cs = r.SelectSingleNode("Companys"); if (cs == null) { cs = xml.CreateNode(XmlNodeType.Element, "Companys", null); r.AppendChild(cs); } XmlNode CompanyNode = _doc.SelectSingleNode("root/Companys/Company[@id=/"" + CompanyID + "/"]"); if (CompanyNode == null) { CompanyNode = xml.CreateNode(XmlNodeType.Element, "Company", null); cs.AppendChild(CompanyNode); XmlAttribute idnode = xml.CreateAttribute("id"); idnode.Value = CompanyID.ToString(); CompanyNode.Attributes.Append(idnode); XmlNode hpnode = xml.CreateNode(XmlNodeType.Element, "HomePage", null); hpnode.InnerText = HomePageUrl; CompanyNode.AppendChild(hpnode); } else { XmlNode hpnode = _doc.SelectSingleNode("root/Companys/Company[@id=/"" + CompanyID + "/"]/HomePage"); if (hpnode == null) { hpnode = xml.CreateNode(XmlNodeType.Element, "HomePage", null); CompanyNode.AppendChild(hpnode); } hpnode.InnerText = HomePageUrl; } _doc.Save(_configPath); } } /// <summary> /// 保存功能模块设置 /// </summary> /// <param name="CompanyID">企业ID</param> /// <param name="buttonList">按钮列表</param> public static void SaveButtonList(long CompanyID,List<Button> buttonList) { XmlDocument xml = LoadDocument(); if (_doc != null) { XmlNode r = _doc.SelectSingleNode("root"); if (r == null) { r = xml.CreateNode(XmlNodeType.Element, "root", null); _doc.AppendChild(r); } XmlNode cs = r.SelectSingleNode("Companys"); if (cs == null) { cs = xml.CreateNode(XmlNodeType.Element, "Companys", null); r.AppendChild(cs); } XmlNode CompanyNode = _doc.SelectSingleNode("root/Companys/Company[@id=/"" + CompanyID + "/"]"); if (CompanyNode == null) { CompanyNode = xml.CreateNode(XmlNodeType.Element, "Company", null); cs.AppendChild(CompanyNode); XmlAttribute idnode = xml.CreateAttribute("id"); idnode.Value = CompanyID.ToString(); CompanyNode.Attributes.Append(idnode); XmlNode hpnode = xml.CreateNode(XmlNodeType.Element, "HomePage", null); hpnode.InnerText = getDefaultHomePage(); CompanyNode.AppendChild(hpnode); } else { XmlNode hpnode = _doc.SelectSingleNode("root/Companys/Company[@id=/"" + CompanyID + "/"]/HomePage"); if (hpnode == null) { hpnode = xml.CreateNode(XmlNodeType.Element, "HomePage", null); hpnode.InnerText = getDefaultHomePage(); CompanyNode.AppendChild(hpnode); } } XmlNode bs = CompanyNode.SelectSingleNode("Buttons"); if (bs == null) { bs = xml.CreateNode(XmlNodeType.Element, "Buttons", null); CompanyNode.AppendChild(bs); } bs.RemoveAll(); for (int i = 0; i < buttonList.Count; i++) { XmlNode ButtonNode = xml.CreateNode(XmlNodeType.Element, "Button", null); bs.AppendChild(ButtonNode); XmlAttribute idnode = xml.CreateAttribute("id"); idnode.Value = buttonList[i].ID.ToString(); ButtonNode.Attributes.Append(idnode); XmlAttribute namenode = xml.CreateAttribute("name"); namenode.Value = buttonList[i].Name; ButtonNode.Attributes.Append(namenode); for (int j = 0; j < buttonList[i].Items.Count; j++) { XmlNode itemNode = xml.CreateNode(XmlNodeType.Element, "item", null); ButtonNode.AppendChild(itemNode); XmlAttribute idnode2 = xml.CreateAttribute("id"); idnode2.Value = buttonList[i].Items[j].ID.ToString(); itemNode.Attributes.Append(idnode2); XmlAttribute namenode2 = xml.CreateAttribute("name"); namenode2.Value = buttonList[i].Items[j].Name; itemNode.Attributes.Append(namenode2); XmlAttribute EnabledNode = xml.CreateAttribute("Enabled"); EnabledNode.Value = buttonList[i].Items[j].Enabled?"1":"0"; itemNode.Attributes.Append(EnabledNode); XmlAttribute hrefNode = xml.CreateAttribute("href"); hrefNode.Value = buttonList[i].Items[j].href; itemNode.Attributes.Append(hrefNode); XmlAttribute targetNode = xml.CreateAttribute("target"); targetNode.Value = buttonList[i].Items[j].Target.ToString(); itemNode.Attributes.Append(targetNode); } } _doc.Save(_configPath); } } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值